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 communiquer avec figurent à la fin de l’article. Notez que le soutien technique est limité pendant la préversion.
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.
Créer et téléverser le fichier zip
- 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.
- 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.
- Téléversez le fichier zip à l’aide de l’une des méthodes suivantes :
- Utilisez PlayFab Game Manager
- Envoyez une requête PUT avec l’en-tête {“x-ms-blob-type”: “BlockBlob”} à l’URL retournée par l’appel de l’API GetAssetUploadUrl.
- Utilisez les cmdlets PowerShell.
Nous recommandons d’inclure dans le fichier zip tous les binaires et actifs nécessaires à votre script, car l’exécution sera plus rapide et MPS mettra moins de temps à fournir vos serveurs de jeu. Assurez-vous d’inclure les actifs 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 téléversé 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 d’actifs téléversé. 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 d’actifs, 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.
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 :
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.
