Acciones de arranque personalizadas - AWS ParallelCluster

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Acciones de arranque personalizadas

Si define los parámetros de OnNodeStartconfiguración HeadNodeCustomActions//,AWS ParallelCluster ejecuta código arbitrario inmediatamente después de que se inicie el nodo. Si define los parámetros de OnNodeConfiguredconfiguración HeadNodeCustomActions//,AWS ParallelCluster ejecuta el código una vez que la configuración del nodo se haya completado correctamente.

A partir de laAWS ParallelCluster versión 3.4.0, el código se puede ejecutar después de la actualización del nodo principal, si define los ajustes de OnNodeUpdatedconfiguración HeadNodeCustomActions//.

En la mayoría de los casos, este código se almacena en Amazon Simple Storage Service (Amazon S3) y se accede a él mediante una conexión HTTPS. El código se ejecuta comoroot y puede estar en cualquier lenguaje de script compatible con el sistema operativo del clúster. A menudo, el código está en Bash o Python.

OnNodeStartlas acciones se invocan antes de iniciar cualquier acción de arranque de despliegue de nodos, como configurar NAT, Amazon Elastic Block Store (Amazon EBS) o el programador. OnNodeStartLas acciones de arranque pueden incluir modificar el almacenamiento, agregar usuarios adicionales y agregar paquetes.

OnNodeConfiguredlas acciones se invocan una vez finalizados los procesos de arranque del nodo. OnNodeConfiguredlas acciones sirven a las últimas acciones que se producen antes de que una instancia se considere completamente configurada y completa. AlgunasOnNodeConfigured acciones incluyen cambiar la configuración del planificador, modificar el almacenamiento y modificar los paquetes. Puede pasar argumentos a los scripts especificándolos durante la configuración.

OnNodeUpdatedlas acciones se invocan una vez completada la actualización del nodo principal y el planificador y el almacenamiento compartido están alineados con los cambios de configuración del clúster más recientes.

CuandoOnNodeStart las accionesOnNodeConfigured personalizadas tienen éxito, el éxito se indica con el código de salida cero (0). Cualquier otro código de salida indica que el arranque de la instancia ha fallado.

Cuando las accionesOnNodeUpdated personalizadas tienen éxito, el éxito se indica con el código de salida cero (0). Cualquier otro código de salida indica que la actualización ha fallado.

nota

Si configura OnNodeUpdated, debe restaurar manualmenteOnNodeUpdated las acciones al estado anterior en caso de errores de actualización.

Si se produce un error en una acciónOnNodeUpdated personalizada, la actualización vuelve al estado anterior. Sin embargo, laOnNodeUpdated acción solo se ejecuta en el momento de la actualización y no en el momento de la reversión de la pila.

Puede especificar diferentes scripts para el nodo principal y para cada cola, en las secciones de CustomActionsconfiguración HeadNodeSchedulingSlurmQueues/CustomActionsy//. OnNodeUpdatedsolo se puede configurar en laHeadNode sección.

nota

Antes deAWS ParallelCluster la versión 3.0, no era posible especificar diferentes scripts para los nodos principales y de procesamiento. Consulte Actualización deAWS ParallelCluster 2.x a 3.x.

Configuración

Los siguientes parámetros de configuración se utilizan para definir HeadNode/CustomActions/OnNodeStart& OnNodeConfigured& OnNodeUpdatedy Scheduling/CustomActions/OnNodeStart& OnNodeConfiguredacciones y argumentos.

HeadNode: [...] CustomActions: OnNodeStart: # Script URL. This is run before any of the bootstrap scripts are run Script: s3://bucket-name/on-node-start.sh Args: - arg1 OnNodeConfigured: # Script URL. This is run after all the bootstrap scripts are run Script: s3://bucket-name/on-node-configured.sh Args: - arg1 OnNodeUpdated: # Script URL. This is run after the head node update is completed. Script: s3://bucket-name/on-node-updated.sh Args: - arg1 # Bucket permissions Iam: S3Access: - BucketName: bucket_name EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: Script: s3://bucket-name/on-node-start.sh Args: - arg1 OnNodeConfigured: Script: s3://bucket-name/on-node-configured.sh Args: - arg1 Iam: S3Access: - BucketName: bucket_name EnableWriteAccess: false

Arguments (Argumentos)

nota

En laAWS ParallelCluster versión 2.x, los$1 argumentos eran reservados para almacenar la URL del script personalizado. Si desea reutilizar los scripts de bootstrap personalizados creados paraAWS ParallelCluster 2.x conAWS ParallelCluster 3.x, debe adaptarlos teniendo en cuenta el cambio de los argumentos. Consulte Actualización deAWS ParallelCluster 2.x a 3.x.

Ejemplo

Los siguientes pasos crean un script sencillo que se ejecutará después de configurar el nodo y que instala loswget paquetesR,curl y en los nodos del clúster.

  1. Cree un script.

    #!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
  2. Cargue el script con los permisos correctos en Amazon S3. Si los permisos de lectura pública no son adecuados para usted, utilice HeadNodelas secciones de SlurmQueuesconfiguración Scheduling//S3Accessy/. Iam Para obtener más información, consulte Trabajo con Amazon S3.

    $ aws s3 cp --acl public-read /path/to/myscript.sh s3://<bucket-name>/myscript.sh
    importante

    Si el script se editó en Windows, los finales de línea deben cambiarse de CRLF a LF antes de subirlo a Amazon S3.

  3. Actualice laAWS ParallelCluster configuración para incluir la nuevaOnNodeConfigured acción.

    CustomActions: OnNodeConfigured: Script: https://<bucket-name>.s3.<region>.amazonaws.com/myscript.sh Args: - "R" - "curl" - "wget"

    Si el bucket no tiene permiso de lectura pública,s3 utilícelo como protocolo URL.

    CustomActions: OnNodeConfigured: Script: s3://<bucket-name>/myscript.sh Args: - "R" - "curl" - "wget"
  4. Lance el clúster.

    $ pcluster create-cluster --cluster-name mycluster \ --region <region> --cluster-configuration config-file.yaml
  5. Verifique el resultado.

    $ less /var/log/cfn-init.log 2021-09-03 10:43:54,588 [DEBUG] Command run postinstall output: The script has 3 arguments arg: R arg: curl arg: wget Loaded plugins: dkms-build-requires, priorities, update-motd, upgrade-helper Package R-3.4.1-1.52.amzn1.x86_64 already installed and latest version Package curl-7.61.1-7.91.amzn1.x86_64 already installed and latest version Package wget-1.18-4.29.amzn1.x86_64 already installed and latest version Nothing to do