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 bootstrap personalizadas
Si define elHeadNode/CustomActions/OnNodeStartajustes de configuración,AWS ParallelClusterejecuta código arbitrario inmediatamente después de que se inicie el nodo. Si define elHeadNode/CustomActions/OnNodeConfiguredajustes de configuración,AWS ParallelClusterejecuta el código una vez completada correctamente la configuración del nodo.
Empezando porAWS ParallelClusterversión 3.4.0, el código se puede ejecutar después de la actualización del nodo principal, si define elHeadNode/CustomActions/OnNodeUpdatedajustes de configuración.
En la mayoría de los casos, este código se almacena en Amazon Simple Storage Service (Amazon S3) y se accede a él a través de una conexión HTTPS. El código se ejecuta comoroot
y puede estar en cualquier lenguaje de escritura compatible con el sistema operativo del clúster. A menudo, el código está enBashoPitón.
nota
Empezando porAWS ParallelClusterversión 3.7.0, el clústerImds/ImdsSupportel valor predeterminado esv2.0
.
Al crear un clúster nuevo para actualizarlo a la versión 3.7.0 y versiones posteriores, actualice los scripts de acción de arranque personalizados para que sean compatibles con IMDSv2 o configureImds/ImdsSupportav1.0
en el archivo de configuración del clúster.
aviso
Usted es responsable de configurar los scripts y argumentos personalizados tal y como se describe en laModelo de responsabilidad compartida
aviso
AWS ParallelClusterno admite el uso de variables internas que se proporcionan a través del/etc/parallelcluster/cfnconfig
archivo. Es posible que este archivo se elimine como parte de una versión futura.
OnNodeStart
se invocan las acciones antes de iniciar cualquier acción de arranque de despliegue de nodos, como la configuración de NAT, Amazon Elastic Block Store (Amazon EBS) o el programador.OnNodeStart
Las acciones de arranque pueden incluir la modificación del almacenamiento, la adición de usuarios adicionales y la adición de paquetes.
nota
Si configurasDirectoryServicey unHeadNode/CustomActions/OnNodeStartscript para su clúster,AWS ParallelClusterconfiguraDirectoryService
y reinicia elsssd
, antes de ejecutar elOnNodeStart
guión.
OnNodeConfigured
las acciones se invocan una vez finalizados los procesos de arranque del nodo.OnNodeConfigured
las acciones son las últimas acciones que se producen antes de que una instancia se considere completamente configurada y completa. AlgunasOnNodeConfigured
las acciones incluyen cambiar la configuración del programador, modificar el almacenamiento y modificar los paquetes. Puede pasar argumentos a los scripts especificándolos durante la configuración.
OnNodeUpdated
Las acciones se ejecutan cuando se completa la actualización del nodo principal y cuando el planificador y el almacenamiento compartido se alinean con los cambios más recientes en la configuración del clúster.
¿CuándoOnNodeStart
oOnNodeConfigured
las acciones personalizadas se realizan correctamente, el éxito se indica con el código de salida cero (0). Cualquier otro código de salida indica que se ha producido un error en el arranque de la instancia.
¿CuándoOnNodeUpdated
las acciones personalizadas se realizan correctamente, 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 configuraOnNodeUpdated, debe restaurar manualmente elOnNodeUpdated
acciones al estado anterior en caso de errores de actualización.
Si unOnNodeUpdated
la acción personalizada falla, la actualización vuelve al estado anterior. Sin embargo, elOnNodeUpdated
la 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 elHeadNode/CustomActionsyScheduling/SlurmQueues/CustomActionssecciones de configuración.OnNodeUpdatedsolo se puede configurar en elHeadNode
sección.
nota
AntesAWS ParallelClusteren la versión 3.0, no era posible especificar scripts diferentes para los nodos principales y de cómputo. Consulte Pasar de AWS ParallelCluster 2.x a 3.x.
Temas
Configuración
Los siguientes ajustes de configuración se utilizan para definirHeadNode/CustomActions/OnNodeStart&OnNodeConfigured&OnNodeUpdatedyScheduling/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
Uso delSequence
configuración (agregada enAWS ParallelClusterversión 3.6.0):
HeadNode: [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script1: s3://
bucket-name
/on-node-start1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run. Sequence: - Script1: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] OnNodeUpdated: # Script URLs. The scripts are run in the same order as listed in the configuration, after the head node update is completed. Sequence: - Script1: s3://bucket-name
/on-node-updated1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-updated2.sh
Args: - arg1 [...] # Bucket permissions Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false Scheduling: Scheduler: slurm [...] SlurmQueues: - Name: queue1 [...] CustomActions: OnNodeStart: # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run Sequence: - Script1: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...] OnNodeConfigured: # Script URLs. The scripts are run in the same order as listed in the configuration, after all the bootstrap scripts are run Sequence: - Script1: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
ElSequence
la configuración se añade empezando porAWS ParallelClusterversión 3.6.0. Cuando especificasSequence
, puede enumerar varios scripts para una acción personalizada.AWS ParallelClustersigue admitiendo la configuración de una acción personalizada con un único script, sin incluirSequence
.
AWS ParallelClusterno admite incluir un único guion ySequence
para la misma acción personalizada. Por ejemplo,AWS ParallelClusterse produce un error si se especifica la siguiente configuración.
[...] 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 # Script URLs. The scripts are run in the same order as listed in the configuration, before any of the bootstrap scripts are run. Sequence: - Script1: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script2: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...]
Argumentos
nota
EnAWS ParallelCluster2.x el$1
los argumentos eran reservados, para almacenar la URL del script personalizado. Si desea volver a utilizar los scripts de bootstrap personalizados creados paraAWS ParallelCluster2.x conAWS ParallelCluster3.x hay que adaptarlos teniendo en cuenta el cambio de los argumentos. Consulte Pasar de AWS ParallelCluster 2.x a 3.x.
Ejemplo de clúster con acciones de arranque personalizadas
Los siguientes pasos crean un script simple que se ejecuta después de configurar el nodo y que instala elR,
curl
ywget
paquetes 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úblicos no son adecuados para usted, utiliceHeadNode/Iam/S3AccessyScheduling/SlurmQueuessecciones de configuración. Para obtener más información, consulte 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 cargar el script en Amazon S3.
-
Actualice elAWS ParallelClusterconfiguració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 depósito no tiene permiso de lectura pública, utilice
s3
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.
-
Si ha agregado acciones personalizadas al
HeadNode
configuración, inicie sesión en el nodo principal y compruebe lacfn-init.log
archivo ubicado en/var/log/cfn-init.log
ejecutando el siguiente comando:$ 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
-
Si ha añadido acciones personalizadas a la
SlurmQueues
configuración, compruebe lacloud-init.log
ubicado en/var/log/cloud-init.log
en un nodo de cómputo. Utilice CloudWatch para ver estos registros.
Puede ver ambos registros en Amazon CloudWatch consola. Para obtener más información, consulte Integración con Amazon CloudWatch Logs.
-
Ejemplo de actualización de un script de arranque personalizado para IMDSv2
En el siguiente ejemplo, actualizamos un script de acción de arranque personalizado que se usó con IMDSv1 para usarlo con IMDSv2. El script IMDSv1 recupera los metadatos del ID de AMI de la instancia EC2.
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
A continuación se muestra el script de acción de arranque personalizado modificado para que sea compatible con IMDSv2.
#!/bin/bash AMI_ID=$(TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Para obtener más información, consulteRecupere los metadatos de la instanciaen elGuía del usuario de EC2 para instancias de Linux.
Ejemplo de actualización de una configuración para IMDSv1
El siguiente es un ejemplo de una configuración de clúster que admite IMDSv1 cuando se usaAWS ParallelClusterversiones 3.7.0 y anteriores.
Region:
us-east-1
Imds: ImdsSupport: v1.0 Image: Os:alinux2
HeadNode: InstanceType:t2.micro
Networking: SubnetId:subnet-abcdef01234567890
Ssh KeyName:key-name
CustomActions: OnNodeConfigured: Script:Script-path
Scheduling: Scheduler: slurm SlurmQueues: - Name:queue1
CustomActions: OnNodeConfigured: Script:Script-path
ComputeResources: - Name:t2micro
Instances: - InstanceType:t2.micro
MinCount:1
1 Networking: SubnetIds: -subnet-abcdef01234567890