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.
OnNodeStart
las 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. OnNodeStart
Las acciones de arranque pueden incluir modificar el almacenamiento, agregar usuarios adicionales y agregar paquetes.
OnNodeConfigured
las acciones se invocan una vez finalizados los procesos de arranque del nodo. OnNodeConfigured
las 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.
OnNodeUpdated
las 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.
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.
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)
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.
-
Cree un script.
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
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.
-
Actualice laAWS ParallelCluster configuración para incluir la nueva
OnNodeConfigured
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" -
Lance el clúster.
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
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