Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Azioni bootstrap personalizzate
Se si definiscono le impostazioni di OnNodeStartconfigurazione HeadNodeCustomActions//, AWS ParallelCluster esegue codice arbitrario immediatamente dopo l'avvio del nodo. Se si definiscono le impostazioni di OnNodeConfiguredconfigurazione HeadNodeCustomActions//, AWS ParallelCluster esegue il codice dopo che la configurazione del nodo è stata completata correttamente.
A partire dalla AWS ParallelCluster versione 3.4.0, il codice può essere eseguito dopo l'aggiornamento del nodo principale, se si definiscono le impostazioni di OnNodeUpdatedconfigurazione HeadNodeCustomActions//.
Nella maggior parte dei casi, questo codice è memorizzato in Amazon Simple Storage Service (Amazon S3) e vi si accede tramite una connessione HTTPS. Il codice viene eseguito root
e può essere in qualsiasi linguaggio di script supportato dal sistema operativo del cluster. Spesso il codice è in Bash o Python.
Nota
A partire dalla AWS ParallelCluster versione 3.7.0, l'impostazione predefinita del cluster Imds/ImdsSupportè. v2.0
Quando crei un nuovo cluster per l'aggiornamento alla versione 3.7.0 e versioni successive, aggiorna gli script di azione bootstrap personalizzati per renderli compatibili con IMDSv2 o imposta/to nel file di configurazione del cluster. ImdsImdsSupportv1.0
avvertimento
L'utente è responsabile della configurazione degli script e degli argomenti personalizzati come descritto nel modello di responsabilità condivisa.
avvertimento
AWS ParallelCluster non supporta l'uso di variabili interne fornite tramite il /etc/parallelcluster/cfnconfig
file. Questo file potrebbe essere rimosso come parte di future release.
OnNodeStart
le azioni vengono richiamate prima dell'avvio di qualsiasi azione di bootstrap di distribuzione del nodo, come la configurazione di NAT, Amazon Elastic Block Store (Amazon EBS) o lo scheduler. OnNodeStart
Le azioni di bootstrap possono includere la modifica dello storage, l'aggiunta di utenti aggiuntivi e l'aggiunta di pacchetti.
Nota
Se DirectoryServiceconfiguri uno OnNodeStartscript HeadNode/CustomActions/per il tuo cluster, AWS ParallelCluster configura DirectoryService
e riavvia lo script prima che venga sssd
eseguito lo script. OnNodeStart
OnNodeConfigured
le azioni vengono richiamate dopo il completamento dei processi di bootstrap del nodo. OnNodeConfigured
le azioni servono alle ultime azioni che si verificano prima che un'istanza venga considerata completamente configurata e completa. Alcune OnNodeConfigured
azioni includono la modifica delle impostazioni dello scheduler, la modifica dell'archiviazione e la modifica dei pacchetti. È possibile passare argomenti agli script specificandoli durante la configurazione.
OnNodeUpdated
le azioni vengono richiamate dopo il completamento dell'aggiornamento del nodo principale e l'allineamento dello scheduler e dello storage condiviso alle ultime modifiche alla configurazione del cluster.
Quando OnNodeStart
le nostre azioni OnNodeConfigured
personalizzate hanno esito positivo, il successo viene indicato con il codice di uscita zero (0). Qualsiasi altro codice di uscita indica che il bootstrap dell'istanza non è riuscito.
Quando le azioni OnNodeUpdated
personalizzate hanno esito positivo, il successo viene segnalato con il codice di uscita zero (0). Qualsiasi altro codice di uscita indica che l'aggiornamento non è riuscito.
Nota
Se si configura OnNodeUpdated, è necessario ripristinare manualmente le OnNodeUpdated
azioni allo stato precedente in caso di errori di aggiornamento.
Se un'azione OnNodeUpdated
personalizzata fallisce, l'aggiornamento torna allo stato precedente. Tuttavia, l'OnNodeUpdated
azione viene eseguita solo al momento dell'aggiornamento e non al momento del rollback dello stack.
È possibile specificare diversi script per il nodo principale e per ogni coda, nelle sezioni di configurazione HeadNode/CustomActionse/Scheduling/SlurmQueues. CustomActions OnNodeUpdatedpuò essere configurato solo nella HeadNode
sezione.
Nota
Prima della AWS ParallelCluster versione 3.0, non era possibile specificare script diversi per i nodi head e compute. Fare riferimento a Passaggio da AWS ParallelCluster 2.x a 3.x.
Argomenti
Configurazione
Le seguenti impostazioni di configurazione vengono utilizzate per definire OnNodeConfiguredazioni OnNodeStarte CustomActionsargomenti HeadNode//OnNodeConfigured& & OnNodeUpdatede SchedulingCustomActions//OnNodeStart&.
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
Utilizzando l'Sequence
impostazione (aggiunta nella AWS ParallelCluster versione 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
L'Sequence
impostazione viene aggiunta a partire dalla AWS ParallelCluster versione 3.6.0. Quando si specificaSequence
, è possibile elencare più script per un'azione personalizzata. AWS ParallelCluster continua a supportare la configurazione di un'azione personalizzata con un singolo script, senza includere. Sequence
AWS ParallelCluster non supporta l'inclusione sia di un singolo script che della stessa azione personalizzata. Sequence
Ad esempio, AWS ParallelCluster fallisce se si specifica la seguente configurazione.
[...] 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 [...]
Argomenti
Nota
Nella AWS ParallelCluster versione 2.x gli $1
argomenti erano riservati, per memorizzare l'URL dello script personalizzato. Se vuoi riutilizzare gli script di bootstrap personalizzati creati per AWS ParallelCluster 2.x con AWS ParallelCluster 3.x, devi adattarli considerando lo spostamento degli argomenti. Fare riferimento a Passaggio da AWS ParallelCluster 2.x a 3.x.
Cluster di esempio con azioni bootstrap personalizzate
I passaggi seguenti creano un semplice script da eseguire dopo la configurazione del nodo, che installa i wget
pacchetti R,
curl
e nei nodi del cluster.
-
Creare uno script.
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
Carica lo script con le autorizzazioni corrette su Amazon S3. Se le autorizzazioni di lettura pubbliche non sono appropriate per te, usa le sezioni HeadNode/IamScheduling/S3AccessSlurmQueuese /configuration. Per ulteriori informazioni, consulta Utilizzo degli Amazon S3.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>
/myscript.sh
Importante
Se lo script è stato modificato in Windows, le terminazioni di riga devono essere modificate da CRLF a LF prima di caricare lo script su Amazon S3.
-
Aggiorna la AWS ParallelCluster configurazione per includere la nuova azione.
OnNodeConfigured
CustomActions: OnNodeConfigured: Script: https://
<bucket-name>
.s3.<region>
.amazonaws.com/myscript.sh
Args: - "R" - "curl" - "wget"Se il bucket non dispone dell'autorizzazione di lettura pubblica, utilizzalo
s3
come protocollo URL.CustomActions: OnNodeConfigured: Script: s3://
<bucket-name>
/myscript.sh
Args: - "R" - "curl" - "wget" -
Avviare il cluster
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
Verificare l'output.
-
Se hai aggiunto azioni personalizzate alla
HeadNode
configurazione, accedi al nodo head e controlla ilcfn-init.log
file in cui si trova/var/log/cfn-init.log
eseguendo il seguente 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
-
Se hai aggiunto azioni personalizzate all'
SlurmQueues
impostazione, controlla che sicloud-init.log
trovi/var/log/cloud-init.log
in un nodo di calcolo. CloudWatch Utilizzatelo per visualizzare questi registri.
Puoi visualizzare entrambi questi log nella CloudWatch console Amazon. Per ulteriori informazioni, consulta Integrazione con Amazon CloudWatch Logs.
-
Esempio di aggiornamento di uno script di bootstrap personalizzato per IMDSv2
Nell'esempio seguente, aggiorniamo uno script di azione bootstrap personalizzato utilizzato con IMDSv1 per l'utilizzo con IMDSv2. Lo script IMDSv1 recupera i metadati dell'ID AMI dell'istanza Amazon EC2.
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Di seguito viene illustrato lo script di azione bootstrap personalizzato modificato per renderlo compatibile 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
Per ulteriori informazioni, consulta la sezione Recupero dei metadati dell'istanza nella Guida per l'utente di Amazon EC2 per le istanze Linux.
Esempio di aggiornamento di una configurazione per IMDSv1
Di seguito è riportato un esempio di configurazione del cluster che supporta IMDSv1 quando si utilizzano le versioni 3.7.0 e precedenti. AWS ParallelCluster
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