Ejecución de un script personalizado durante la creación de la VM: VmStartupScript (versión preliminar)
Introducción
Esta característica está en versión preliminar. Le invitamos a empezar a usarla hoy mismo y darnos su opinión. Las instrucciones sobre cómo ponerse en contacto con nosotros se proporcionan al final del artículo. Tenga en cuenta que el soporte técnico es limitado durante la versión preliminar.
Esta es una característica avanzada que debe usarse con extrema precaución. El script en ejecución se ejecuta en el nivel de la máquina virtual (VM) con privilegios de administrador (root). Si no se usa correctamente, puede interrumpir potencialmente el flujo normal de los servidores de juego en ejecución, o incluso impedir que se ejecuten por completo. El usuario final es responsable del contenido del script.
Cómo usar VmStartupScript
Para usar la característica VmStartupScript, debe proporcionar un script personalizado y todo el software pertinente (opcional) que planee instalar. El script comienza a ejecutarse cuando se inicializa la máquina virtual. Esta operación se produce antes de que los servidores de juego se inicien en cada VM. Después de que el script haya terminado de ejecutarse correctamente, el servicio MPS continúa completando la inicialización de los servidores de juego y los lleva al estado StandingBy. Para obtener más información sobre los distintos estados de un servidor de juego, consulte Ciclo de vida de un servidor multijugador. Para usar esta característica en un entorno de producción real, consulte Flujo de trabajo de desarrollo recomendado antes de empezar.Creación de un script
- Cree un archivo llamado PF_StartupScript.sh para las VM de Linux o PF_StartupScript.ps1 para las VM de Windows.
- Agregue comandos de configuración y ejecución en el archivo. Si los necesita, aquí tiene algunas variables de entorno de uso común que puede usar en el script. Algunas acciones no se admiten o harían que las VM no se iniciaran correctamente, lo que generaría cargos no deseados. Para obtener más información, consulte la sección Qué no se admite.
Creación y carga del archivo comprimido
- Reúna en una carpeta todo el software pertinente que su script vaya a usar o llamar. Si su script instala software de terceros, el script puede descargarlo durante la ejecución, o el software puede incluirse en el archivo comprimido. Omita este paso si no va a instalar nada.
- Cree un archivo comprimido (.zip) con el script (.sh o .ps1) que creó en la sección anterior y el software que reunió en el paso anterior, si es necesario. El archivo de script debe estar en la raíz del archivo comprimido y no dentro de un directorio. Además, si su archivo de script no se llama PF_StartupScript.sh (Linux) o PF_StartupScript.ps1 (Windows), no se ejecutará y los servidores de juego no se iniciarán.
- Cargue el archivo comprimido con uno de los métodos siguientes:
- Use PlayFab Game Manager
- Emita una solicitud PUT con el encabezado {“x-ms-blob-type”: “BlockBlob”} en la dirección URL devuelta por la llamada a la API GetAssetUploadUrl.
- Use los cmdlets de PowerShell.
Le recomendamos incluir en el archivo comprimido todos los binarios y recursos que necesite su script, ya que esto se traducirá en una ejecución más rápida y en menos tiempo para que MPS entregue sus servidores de juego. Asegúrese de incluir los recursos para la plataforma en la que se ejecutarán sus servidores de juego. Por ejemplo, si usa servidores Linux, debe incluir paquetes Debian/Ubuntu “amd64”.
Aplicación del script personalizado a las compilaciones nuevas
Después de cargar el archivo .zip, use la API de MPS para crear una nueva compilación tras configurar la propiedad VmStartupScriptAssetReference. Para obtener instrucciones, consulte Cómo crear compilaciones con la API de MPS.- Agregue la propiedad VmStartupScriptConfiguration.VmStartupScriptAssetReference, que incluye una referencia al archivo de recursos cargado. Esta propiedad forma parte de todas las API relacionadas con “CreateBuild”, como CreateBuildWithCustomContainer, CreateBuildWithManagedContainer y CreateBuildWithProcessBasedServer.
- Agregue un valor válido para la propiedad VmStartupScriptAssetReference.FileName. Este valor debe ser el mismo que el nombre de su archivo de recursos, por ejemplo vmstartupscriptassets.zip.
- La propiedad VmStartupScriptAssetReference.MountPath debe estar vacía, ya que no se admite para la característica VmStartupScript.
Si establece un valor para la propiedad MountPath, la operación de creación de la compilación producirá un error.
Consideraciones especiales
En Linux, ¿es necesario marcar el archivo PF_StartupScript.sh como ejecutable?
Antes de que MPS ejecute el archivo de script, lo marca como ejecutable y, a continuación, convierte los finales de línea de Windows (“\r\n”) a los de Linux (“\n”). Por tanto, no necesita preocuparse por estas dos cosas.Variables de entorno
Estas son las variables de entorno que puede usar en su script de inicio.Qué no se admite
No debe realizar estas acciones desde su script, ya que hay una alta probabilidad de interrumpir el ciclo de vida de la VM y de los servidores de juego:- No se bloquee durante la ejecución del script de inicio. El script debe terminar correctamente para que se creen los servidores de juego. Si necesita que algo se ejecute en segundo plano, puede instalarlo como un servicio systemd en Linux o como un servicio de Windows.
- No use puertos a partir del número 30000, ya que se usan para los servidores de juego, ni el puerto 56001, ya que lo usa el proceso VmAgent (el ejecutable orquestador de servidores de juego de MPS).
- No modifique ninguno de los archivos de las rutas D: (Windows) o /mnt (Linux), ya que estos archivos son necesarios para el funcionamiento de VmAgent (aparte de las carpetas que contienen contenido editable, como
PF_SHARED_CONTENT_FOLDER_VM). - No debe usar el GSDK desde el VmStartupScript ni desde una aplicación iniciada por él. El GSDK solo debe usarse desde los servidores de juego.
- No debe reiniciar manualmente la máquina virtual, ya que esta operación creará problemas en la comunicación con el plano de control de MPS.
Puertos
Cuando usa la característica VmStartupScript, es posible solicitar que se expongan varios puertos en cada VM. Estos puertos pueden ser usados por cualquier programa iniciado por su script y son distintos de los puertos que MPS abre para sus servidores de juego.Uso
Puede solicitar hasta cinco puertos por cada VM. Para cada puerto, debe especificar el protocolo (TCP o UDP) y un nombre. Este es un ejemplo de cómo solicitar dos puertos:
Por ejemplo, para los dos puertos solicitados en el script de ejemplo anterior, debería encontrar estas variables de entorno en su VmStartupScript:
De forma similar a los puertos que abrimos para los servidores de juego, es su responsabilidad autenticar a los clientes que se conecten a sus puertos. MPS no proporciona ningún mecanismo de autenticación para estos puertos.
Los clientes verán que los puertos asignados comienzan a partir del número 20000. Sin embargo, le recomendamos que no codifique de forma rígida este valor en sus scripts, ya que podría cambiar en el futuro, y que use siempre las variables de entorno para obtener la información correcta de los puertos.
