Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Actions de bootstrap personnalisées
Si vous définissez les paramètres de OnNodeStartconfiguration HeadNodeCustomActions//, AWS ParallelCluster exécute du code arbitraire immédiatement après le démarrage du nœud. Si vous définissez les paramètres de OnNodeConfiguredconfiguration HeadNodeCustomActions//, AWS ParallelCluster exécute le code une fois que la configuration du nœud est correctement terminée.
À partir de la AWS ParallelCluster version 3.4.0, le code peut être exécuté après la mise à jour du nœud principal, si vous définissez les paramètres de OnNodeUpdatedconfiguration HeadNodeCustomActions//.
Dans la plupart des cas, ce code est stocké dans Amazon Simple Storage Service (Amazon S3) et accessible via une connexion HTTPS. Le code est exécuté root
et peut être exécuté dans n'importe quel langage de script pris en charge par le système d'exploitation du cluster. Le code est souvent en Bash ou en Python.
Note
À partir de AWS ParallelCluster la version 3.7.0, le ImdsSupportparamètre Imdscluster/ par défaut estv2.0
.
Lorsque vous créez un nouveau cluster pour effectuer une mise à niveau vers la version 3.7.0 et les versions ultérieures, mettez à jour vos scripts d'action bootstrap personnalisés pour qu'ils soient compatibles avec IMDSv2 ou définissez Imds/ImdsSupportto v1.0
dans votre fichier de configuration de cluster.
Avertissement
Vous êtes responsable de la configuration des scripts et arguments personnalisés, comme décrit dans le modèle de responsabilité partagée
Avertissement
AWS ParallelCluster ne prend pas en charge l'utilisation de variables internes fournies par le biais du /etc/parallelcluster/cfnconfig
fichier. Ce fichier sera peut-être supprimé dans le cadre d'une future version.
OnNodeStart
les actions sont appelées avant le lancement de toute action d'amorçage du déploiement d'un nœud, telle que la configuration de NAT, d'Amazon Elastic Block Store (Amazon EBS) ou du planificateur. OnNodeStart
les actions bootstrap peuvent inclure la modification du stockage, l'ajout d'utilisateurs supplémentaires et l'ajout de packages.
Note
Si vous DirectoryServiceconfigurez un OnNodeStartscript HeadNode/CustomActions/pour votre cluster, AWS ParallelCluster configurez DirectoryService
et redémarrez lesssd
, avant qu'il n'exécute le OnNodeStart
script.
OnNodeConfigured
les actions sont appelées une fois les processus d'amorçage du nœud terminés. OnNodeConfigured
les actions correspondent aux dernières actions effectuées avant qu'une instance ne soit considérée comme entièrement configurée et complète. Certaines OnNodeConfigured
actions incluent la modification des paramètres du planificateur, la modification du stockage et la modification des packages. Vous pouvez transmettre des arguments aux scripts en les spécifiant lors de la configuration.
OnNodeUpdated
les actions sont appelées une fois que la mise à jour du nœud principal est terminée et que le planificateur et le stockage partagé sont alignés sur les dernières modifications de configuration du cluster.
Lorsque OnNodeStart
les actions OnNodeConfigured
personnalisées réussissent, le succès est indiqué par le code de sortie zéro (0). Tout autre code de sortie indique que le bootstrap de l'instance a échoué.
Lorsque les actions OnNodeUpdated
personnalisées réussissent, leur réussite est signalée par le code de sortie zéro (0). Tout autre code de sortie indique que la mise à jour a échoué.
Note
Si vous configurez OnNodeUpdated, vous devez restaurer manuellement les OnNodeUpdated
actions à leur état précédent en cas d'échec de mise à jour.
Si une action OnNodeUpdated
personnalisée échoue, la mise à jour revient à l'état précédent. Toutefois, l'OnNodeUpdated
action n'est exécutée qu'au moment de la mise à jour et non au moment de la restauration de la pile.
Vous pouvez spécifier différents scripts pour le nœud principal et pour chaque file d'attente, dans les sections de CustomActionsconfiguration HeadNodeSchedulingSlurmQueues/CustomActionset//. OnNodeUpdatedne peut être configuré que dans la HeadNode
section.
Note
Avant AWS ParallelCluster la version 3.0, il n'était pas possible de spécifier des scripts différents pour les nœuds de tête et de calcul. Veuillez consulter Passer de la version AWS ParallelCluster 2.x à la version 3.x.
Rubriques
Configuration
Les paramètres de configuration suivants sont utilisés pour définir les HeadNodeOnNodeConfiguredactions OnNodeStartet OnNodeConfiguredles arguments Scheduling/CustomActions/OnNodeStart& & et//. CustomActionsOnNodeUpdated
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
En utilisant le Sequence
paramètre (ajouté dans la AWS ParallelCluster version 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: - Script: s3://
bucket-name
/on-node-start1.sh
Args: - arg1 - Script: 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: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: 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: - Script: s3://bucket-name
/on-node-updated1.sh
Args: - arg1 - Script: 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: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: 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: - Script: s3://bucket-name
/on-node-configured1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-configured2.sh
Args: - arg1 [...] Iam: S3Access: - BucketName:bucket_name
EnableWriteAccess: false
Le Sequence
paramètre est ajouté à partir de la AWS ParallelCluster version 3.6.0. Lorsque vous le spécifiezSequence
, vous pouvez répertorier plusieurs scripts pour une action personnalisée. AWS ParallelCluster continue de prendre en charge la configuration d'une action personnalisée avec un seul script, sans inclureSequence
.
AWS ParallelCluster ne permet pas d'inclure à la fois un seul script et Sequence
pour la même action personnalisée. Par exemple, AWS ParallelCluster échoue si vous spécifiez la configuration suivante.
[...] 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: - Script: s3://bucket-name
/on-node-start1.sh
Args: - arg1 - Script: s3://bucket-name
/on-node-start2.sh
Args: - arg1 [...]
Arguments
Note
Dans la AWS ParallelCluster version 2.x, les $1
arguments étaient réservés, pour stocker l'URL du script personnalisé. Si vous souhaitez réutiliser les scripts bootstrap personnalisés créés pour AWS ParallelCluster 2.x avec AWS ParallelCluster 3.x, vous devez les adapter en tenant compte du décalage des arguments. Veuillez consulter Passer de la version AWS ParallelCluster 2.x à la version 3.x.
Exemple de cluster avec des actions bootstrap personnalisées
Les étapes suivantes créent un script simple à exécuter une fois le nœud configuré, qui installe les wget
packages R,
curl
et dans les nœuds du cluster.
-
Créez un script.
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
Téléchargez le script avec les autorisations appropriées sur Amazon S3. Si les autorisations de lecture publiques ne vous conviennent pas, utilisez HeadNodeles sections de SlurmQueuesconfiguration Scheduling//S3Accesset/. Iam Pour plus d’informations, consultez Utilisation des services dans Amazon S3.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>
/myscript.sh
Important
Si le script a été modifié sous Windows, les fins de ligne doivent passer de CRLF à LF avant que le script ne soit chargé sur Amazon S3.
-
Mettez à jour la AWS ParallelCluster configuration pour inclure la nouvelle
OnNodeConfigured
action.CustomActions: OnNodeConfigured: Script: https://
<bucket-name>
.s3.<region>
.amazonaws.com/myscript.sh
Args: - "R" - "curl" - "wget"Si le bucket ne dispose pas d'une autorisation de lecture publique,
s3
utilisez-le comme protocole URL.CustomActions: OnNodeConfigured: Script: s3://
<bucket-name>
/myscript.sh
Args: - "R" - "curl" - "wget" -
Lancement du cluster
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
Vérifiez la sortie.
-
Si vous avez ajouté des actions personnalisées à la
HeadNode
configuration, connectez-vous au nœud principal et vérifiez lecfn-init.log
fichier qui s'y trouve/var/log/cfn-init.log
en exécutant la commande suivante :$ 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 vous avez ajouté des actions personnalisées au
SlurmQueues
paramètre, vérifiez l'cloud-init.log
emplacement/var/log/cloud-init.log
dans un nœud de calcul. CloudWatch À utiliser pour consulter ces journaux.
Vous pouvez consulter ces deux journaux dans la CloudWatch console Amazon. Pour plus d’informations, consultez Intégration avec Amazon CloudWatch Logs avec Amazon Logs.
-
Exemple de mise à jour d'un script bootstrap personnalisé pour IMDSv2
Dans l'exemple suivant, nous mettons à jour un script d'action bootstrap personnalisé qui a été utilisé avec IMDSv1 pour être utilisé avec IMDSv2. Le script IMDSv1 récupère les métadonnées de l'ID AMI de l'instance Amazon EC2.
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Ce qui suit montre le script d'action bootstrap personnalisé modifié pour être compatible avec 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
Pour plus d'informations, consultez Récupération des métadonnées d'instance dans le Guide de l'utilisateur Amazon EC2 pour les instances Linux.
Exemple de mise à jour d'une configuration pour IMDSv1
Voici un exemple de configuration de cluster qui prend en charge IMDSv1 lors de l'utilisation des AWS ParallelCluster versions 3.7.0 et antérieures.
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