Passer au contenu principal

Exécution d’un script personnalisé lors de la création d’une machine virtuelle - VmStartupScript (préversion)

Introduction

Cette fonctionnalité est en préversion. Vous pouvez commencer à l’utiliser dès aujourd’hui et nous faire part de vos commentaires. Les instructions permettant de nous contacter figurent à la fin de l’article. Notez que le support technique est limité pendant la préversion.
VmStartupScript vous permet d’exécuter un script personnalisé sur les machines virtuelles (VM) utilisées dans PlayFab Multiplayer Servers (MPS). MPS est optimisé pour l’hébergement de serveurs de jeu, ce qui permet à votre titre d’évoluer facilement et dynamiquement en fonction de la demande. Pour faciliter la personnalisation rapide d’un grand nombre de serveurs lors de l’initialisation des machines virtuelles, le script personnalisé peut s’exécuter sur chaque machine virtuelle sous-jacente qui héberge vos serveurs de jeu. Il peut être utilisé pour accomplir des tâches telles que l’installation de logiciels personnalisés, la modification des paramètres de sécurité, l’utilisation d’un service personnalisé pour journaliser la sortie et les métriques des serveurs de jeu, etc.
Il s’agit d’une fonctionnalité avancée qui doit être utilisée avec une extrême prudence. Le script s’exécute au niveau de la machine virtuelle (VM) avec des privilèges d’administrateur (root). S’il n’est pas utilisé correctement, il peut perturber le fonctionnement normal des serveurs de jeu en cours d’exécution, voire les empêcher complètement de s’exécuter. L’utilisateur final est responsable du contenu du script.

Utiliser VmStartupScript

Pour utiliser la fonctionnalité VmStartupScript, vous devez fournir un script personnalisé ainsi que (facultativement) tous les logiciels pertinents que vous prévoyez d’installer. Le script commence à s’exécuter lors de l’initialisation de la machine virtuelle. Cette opération a lieu avant le démarrage des serveurs de jeu sur chaque machine virtuelle. Une fois l’exécution du script terminée avec succès, le service MPS termine l’initialisation des serveurs de jeu et les fait passer à l’état StandingBy. Pour en savoir plus sur les différents états des serveurs de jeu, consultez Cycle de vie d’un serveur multijoueur. Pour utiliser cette fonctionnalité dans un environnement de production réel, consultez le flux de travail de développement recommandé avant de commencer.

Créer un script

  • Créez un fichier appelé PF_StartupScript.sh pour les machines virtuelles Linux ou PF_StartupScript.ps1 pour les machines virtuelles Windows.
  • Ajoutez des commandes de configuration/d’exécution dans le fichier. Si nécessaire, voici quelques variables d’environnement couramment utilisées que vous pouvez utiliser dans le script. Certaines actions ne sont pas prises en charge ou empêcheraient les machines virtuelles de démarrer correctement, ce qui entraînerait des frais indésirables. Pour plus de détails, consultez la section Ce qui n’est pas pris en charge.
Pour des exemples de scripts, consultez VmStartupScriptGallery.

Créer et charger le fichier zip

  1. Rassemblez dans un dossier tous les logiciels pertinents que votre script prévoit d’utiliser ou d’appeler. Si votre script installe des logiciels tiers, il peut les télécharger pendant son exécution, ou ceux-ci peuvent être fournis avec lui dans le fichier zip. Ignorez cette étape si vous n’installez rien.
  2. Créez un fichier zip (.zip) contenant le script (.sh ou .ps1) créé dans la section précédente et, si nécessaire, les logiciels rassemblés à l’étape précédente. Le fichier de script doit se trouver à la racine du fichier zip et non dans un répertoire. En outre, si votre fichier de script ne s’appelle pas PF_StartupScript.sh (Linux) ou PF_StartupScript.ps1 (Windows), il ne sera pas exécuté et les serveurs de jeu ne démarreront pas.
  3. Chargez le fichier zip à l’aide de l’une des méthodes suivantes :
Nous recommandons d’inclure dans le fichier zip tous les binaires et ressources nécessaires à votre script, car l’exécution sera plus rapide et MPS mettra moins de temps à fournir vos serveurs de jeu. Veillez à inclure les ressources correspondant à la plateforme sur laquelle vos serveurs de jeu s’exécuteront. Par exemple, si vous utilisez des serveurs Linux, vous devez inclure des packages Debian/Ubuntu “amd64”.

Appliquer le script personnalisé aux nouvelles builds

Après avoir chargé le fichier .zip, utilisez l’API MPS pour créer une build après avoir configuré la propriété VmStartupScriptAssetReference. Pour obtenir des instructions, consultez Créer des builds à l’aide de l’API MPS.
  • Ajoutez la propriété VmStartupScriptConfiguration.VmStartupScriptAssetReference, qui inclut une référence au fichier de ressources chargé. Cette propriété fait partie de toutes les API liées à “CreateBuild”, comme CreateBuildWithCustomContainer, CreateBuildWithManagedContainer et CreateBuildWithProcessBasedServer.
  • Ajoutez une valeur valide pour la propriété VmStartupScriptAssetReference.FileName. Cette valeur doit être identique au nom de votre fichier de ressources, par exemple vmstartupscriptassets.zip.
  • La propriété VmStartupScriptAssetReference.MountPath doit être vide, car elle n’est pas prise en charge pour la fonctionnalité VmStartupScript.
Si vous définissez une valeur pour la propriété MountPath, l’opération de création de build échoue.
L’exemple de code ci-dessous crée une build avec des conteneurs Linux, puis utilise le script de vmstartupscriptassets.zip pour personnaliser les machines virtuelles :
VmStartupScript s’exécute pendant l’étape de préparation (“Propping”) de la machine virtuelle et doit se terminer avec succès pour que les serveurs de jeu démarrent. En cas d’échec (code de sortie différent de 0), la machine virtuelle ne passe pas à l’état “Running”, et vous devez vous y connecter en RDP/SSH pour déboguer. Pour en savoir plus, consultez le flux de travail de développement recommandé. La machine virtuelle continue de tenter d’exécuter VmStartupScript.

Considérations particulières

Sous Linux, le fichier PF_StartupScript.sh doit-il être marqué comme exécutable ?

Avant d’exécuter le fichier de script, MPS le marque comme exécutable, puis convertit les fins de ligne Windows (“\r\n”) en fins de ligne Linux (“\n”). Vous n’avez donc pas à vous soucier de ces deux points.

Variables d’environnement

Voici les variables d’environnement que vous pouvez utiliser dans votre script de démarrage.

Ce qui n’est pas pris en charge

Vous ne devez pas effectuer les actions suivantes depuis votre script, car elles risquent fortement de perturber le cycle de vie de la machine virtuelle et des serveurs de jeu :
  • Ne bloquez pas pendant l’exécution du script de démarrage. Le script doit se terminer avec succès pour que les serveurs de jeu soient créés. Si vous avez besoin que quelque chose s’exécute en arrière-plan, vous pouvez l’installer en tant que service systemd sous Linux ou en tant que service Windows.
  • N’utilisez pas les ports à partir de 30000, car ils sont utilisés pour les serveurs de jeu, ni le port 56001, utilisé par le processus VmAgent (l’exécutable d’orchestration des serveurs de jeu MPS).
  • Ne modifiez aucun des fichiers des chemins D: (Windows) ou /mnt (Linux), car ils sont nécessaires au fonctionnement de VmAgent (à l’exception des dossiers dont le contenu est modifiable, comme PF_SHARED_CONTENT_FOLDER_VM).
  • Vous ne devez pas utiliser le GSDK depuis VmStartupScript ou depuis une application lancée par celui-ci. Le GSDK ne doit être utilisé que depuis les serveurs de jeu.
  • Vous ne devez pas redémarrer manuellement la machine virtuelle, car cette opération pose des problèmes de communication avec le plan de contrôle MPS.

Ports

Lorsque vous utilisez la fonctionnalité VmStartupScript, vous pouvez demander l’exposition d’un certain nombre de ports sur chaque machine virtuelle. Ces ports peuvent être utilisés par tous les programmes lancés par votre script et sont distincts des ports que MPS ouvre pour vos serveurs de jeu.

Utilisation

Vous pouvez demander jusqu’à cinq ports par machine virtuelle. Pour chaque port, vous devez spécifier le protocole (TCP ou UDP) et un nom. Voici un exemple de demande de deux ports :
Si vous demandez des ports, les variables d’environnement suivantes sont mises à la disposition de votre script pour vous aider à obtenir des informations sur ces ports : Par exemple, pour les deux ports demandés dans l’exemple de script ci-dessus, vous devriez trouver ces variables d’environnement dans votre VmStartupScript :
Comme pour les ports que nous ouvrons pour les serveurs de jeu, il vous incombe d’authentifier les clients qui se connectent à vos ports. MPS ne fournit aucun mécanisme d’authentification pour ces ports.
Les clients constateront que les ports alloués commencent à partir du numéro 20000. Toutefois, nous vous recommandons de ne pas coder cette valeur en dur dans vos scripts, car elle pourrait changer à l’avenir, et de toujours utiliser les variables d’environnement pour obtenir les informations de port appropriées.

Développement/débogage

Avant d’utiliser la fonctionnalité VmStartupScript, nous vous recommandons de consulter les exemples de scripts de notre référentiel open source sur GitHub (VmStartupScriptGallery). Les contributions sont les bienvenues !

Flux de travail de développement recommandé

Commencez par créer une build de test avec une seule machine virtuelle. Cette machine virtuelle doit avoir des caractéristiques similaires à celle sur laquelle vous prévoyez de déployer votre build de production. Une fois cette machine virtuelle déployée, vous pouvez vous y connecter en RDP/SSH, copier les fichiers nécessaires et essayer de modifier/exécuter le script jusqu’à ce qu’il fonctionne. Une fois cette machine virtuelle opérationnelle et le comportement attendu de votre script vérifié, vous pouvez placer le script et les ressources dans un fichier .zip. Vous pouvez ensuite le charger et essayer de créer une build avec. Essayez de nouveau de créer une build à une seule machine virtuelle afin de réduire les coûts, puis montez en charge une fois que vous êtes certain que votre script fonctionne. Si vous rencontrez des difficultés lors de l’exécution de votre script, vous pouvez déboguer en vous connectant à la machine virtuelle via RDP/SSH et en consultant les fichiers PF_StartupScriptStdOut.txt et PF_StartupScriptStdErr.txt, qui contiennent respectivement les flux de sortie standard et d’erreur standard du script. Ces fichiers se trouvent sur le lecteur D: sous Windows ou dans /mnt sous Linux. Le script doit être idempotent, car il est possible qu’il soit exécuté plusieurs fois. Par exemple, si le script tente de télécharger une ressource externe et échoue en raison d’un problème réseau, MPS relance l’exécution complète du script.

Support

Le service MPS exécute tout ce que contient votre VmStartupScript. Toutefois, l’équipe ne fournit pas de support pour les actions et exécutables individuels installés ou exécutés dans le cadre du script. Pendant la préversion, obtenez de l’aide et envoyez vos commentaires via les forums de la communauté PlayFab et Discord. Si vous rencontrez des problèmes avec un script du référentiel VmStartupScriptGallery ou souhaitez en demander un nouveau, ouvrez un problème sur GitHub.
Dernière modification le 8 octobre 2026