Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Benutzerdefinierte Bootstrap-Aktionen
Wenn Sie die OnNodeStartKonfigurationseinstellungen HeadNode/CustomActions/definieren, AWS ParallelCluster führt unmittelbar nach dem Start des Knotens beliebigen Code aus. Wenn Sie die OnNodeConfiguredKonfigurationseinstellungen HeadNode/CustomActions/definieren, AWS ParallelCluster wird der Code ausgeführt, nachdem die Knotenkonfiguration korrekt abgeschlossen wurde.
Ab AWS ParallelCluster Version 3.4.0 kann der Code nach dem Update des Kopfknotens ausgeführt werden, wenn Sie die OnNodeUpdatedKonfigurationseinstellungen HeadNode/CustomActions/definieren.
In den meisten Fällen wird dieser Code in Amazon Simple Storage Service (Amazon S3) gespeichert und der Zugriff erfolgt über eine HTTPS-Verbindung. Der Code wird in jeder Skriptsprache ausgeführt, die vom Cluster-Betriebssystem unterstützt wird, root
und kann in dieser Sprache sein. Oft ist der Code in Bash oder Python.
Anmerkung
Ab AWS ParallelCluster Version 3.7.0 lautet die ImdsSupportStandardeinstellung cluster Imds/. v2.0
Wenn Sie einen neuen Cluster für ein Upgrade auf Version 3.7.0 und spätere Versionen erstellen, aktualisieren Sie entweder Ihre benutzerdefinierten Bootstrap-Aktionsskripte, sodass sie mit IMDSv2 kompatibel sind, oder setzen Sie v1.0
in Ihrer ImdsCluster-Konfigurationsdatei ImdsSupportauf/.
Warnung
Sie sind für die Konfiguration der benutzerdefinierten Skripts und Argumente verantwortlich, wie im Modell der gemeinsamen Verantwortung beschrieben.
Warnung
AWS ParallelClusterunterstützt nicht die Verwendung interner Variablen, die über die /etc/parallelcluster/cfnconfig
Datei bereitgestellt werden. Diese Datei wird möglicherweise als Teil einer future Version entfernt.
OnNodeStart
Aktionen werden aufgerufen, bevor eine Bootstrap-Aktion zur Knotenbereitstellung gestartet wird, z. B. die Konfiguration von NAT, Amazon Elastic Block Store (Amazon EBS) oder des Schedulers. OnNodeStart
Bootstrap-Aktionen können das Ändern von Speicher, das Hinzufügen zusätzlicher Benutzer und das Hinzufügen von Paketen umfassen.
Anmerkung
Wenn Sie ein HeadNodeCustomActionsOnNodeStart//-Skript für Ihren Cluster konfigurieren DirectoryService, AWS ParallelCluster konfiguriert DirectoryService
und startet das neusssd
, bevor es das Skript ausführt. OnNodeStart
OnNodeConfigured
Aktionen werden aufgerufen, nachdem die Bootstrap-Prozesse des Knotens abgeschlossen sind. OnNodeConfigured
Aktionen dienen den letzten Aktionen, die ausgeführt werden, bevor eine Instanz als vollständig konfiguriert und abgeschlossen betrachtet wird. Einige OnNodeConfigured
Aktionen umfassen das Ändern von Scheduler-Einstellungen, das Ändern des Speichers und das Ändern von Paketen. Sie können Argumente an Skripts übergeben, indem Sie sie bei der Konfiguration angeben.
OnNodeUpdated
Aktionen werden aufgerufen, nachdem die Aktualisierung des Hauptknotens abgeschlossen ist und der Scheduler und der gemeinsam genutzte Speicher an die neuesten Änderungen der Cluster-Konfiguration angepasst wurden.
Wenn OnNodeStart
unsere OnNodeConfigured
benutzerdefinierten Aktionen erfolgreich sind, wird der Erfolg mit dem Exit-Code Null (0) angezeigt. Jeder andere Exit-Code weist darauf hin, dass der Instanz-Bootstrap fehlgeschlagen ist.
Wenn OnNodeUpdated
benutzerdefinierte Aktionen erfolgreich sind, wird der Erfolg mit dem Exit-Code Null (0) signalisiert. Jeder andere Exit-Code weist darauf hin, dass das Update fehlgeschlagen ist.
Anmerkung
Wenn Sie die Konfiguration OnNodeUpdatedvornehmen, müssen Sie die OnNodeUpdated
Aktionen bei fehlgeschlagenen Updates manuell auf den vorherigen Status zurücksetzen.
Wenn eine OnNodeUpdated
benutzerdefinierte Aktion fehlschlägt, wird das Update auf den vorherigen Status zurückgesetzt. Die OnNodeUpdated
Aktion wird jedoch nur zur Aktualisierungszeit und nicht zur Stack-Rollback-Zeit ausgeführt.
In den CustomActionsKonfigurationsabschnitten/und HeadNode//können Sie unterschiedliche Skripten für den Hauptknoten CustomActionsund Schedulingfür jede Warteschlange angeben. SlurmQueues OnNodeUpdatedkann nur im HeadNode
Abschnitt konfiguriert werden.
Anmerkung
Vor AWS ParallelCluster Version 3.0 war es nicht möglich, unterschiedliche Skripte für Head- und Compute-Knoten anzugeben. Weitere Informationen finden Sie unter Umstellung von AWS ParallelCluster 2.x auf 3.x.
Themen
Konfiguration
Die folgenden Konfigurationseinstellungen werden verwendet, um HeadNode/CustomActions/OnNodeStart& OnNodeConfigured& OnNodeUpdatedund Scheduling/CustomActions/OnNodeStart& OnNodeConfiguredAktionen und Argumente zu definieren.
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
Verwenden der Sequence
Einstellung (in AWS ParallelCluster Version 3.6.0 hinzugefügt):
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
Die Sequence
Einstellung wird ab AWS ParallelCluster Version 3.6.0 hinzugefügt. Wenn Sie angebenSequence
, können Sie mehrere Skripts für eine benutzerdefinierte Aktion auflisten. AWS ParallelClusterunterstützt weiterhin die Konfiguration einer benutzerdefinierten Aktion mit einem einzigen Skript, ohne dies einzuschließenSequence
.
AWS ParallelClusterunterstützt nicht, sowohl ein einzelnes Skript als auch Sequence
dieselbe benutzerdefinierte Aktion einzubeziehen. Schlägt beispielsweise AWS ParallelCluster fehl, wenn Sie die folgende Konfiguration angeben.
[...] 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 [...]
Argumente
Anmerkung
In AWS ParallelCluster 2.x waren die $1
Argumente reserviert, um die URL des benutzerdefinierten Skripts zu speichern. Wenn Sie die für AWS ParallelCluster 2.x erstellten benutzerdefinierten Bootstrap-Skripte mit AWS ParallelCluster 3.x wiederverwenden möchten, müssen Sie sie anpassen, indem Sie die Verschiebung der Argumente berücksichtigen. Weitere Informationen finden Sie unter Umstellung von AWS ParallelCluster 2.x auf 3.x.
Beispielcluster mit benutzerdefinierten Bootstrap-Aktionen
Mit den folgenden Schritten wird ein einfaches Skript erstellt, das nach der Konfiguration des Knotens ausgeführt wird und das die wget
Pakete R,
curl
und in den Knoten des Clusters installiert.
-
Erstellen Sie ein Skript.
#!/bin/bash echo "The script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:1}"
-
Laden Sie das Skript mit den richtigen Berechtigungen auf Amazon S3 hoch. Wenn öffentliche Leseberechtigungen für Sie nicht geeignet sind, verwenden HeadNodeSie die SlurmQueuesKonfigurationsabschnitte Scheduling//S3Accessund/. Iam Weitere Informationen finden Sie unter Arbeiten mit Amazon S3.
$
aws s3 cp --acl public-read
/path/to/myscript.sh
s3://<bucket-name>
/myscript.sh
Wichtig
Wenn das Skript unter Windows bearbeitet wurde, müssen die Zeilenenden von CRLF in LF geändert werden, bevor das Skript auf Amazon S3 hochgeladen wird.
-
Aktualisieren Sie die AWS ParallelCluster Konfiguration, sodass sie die neue
OnNodeConfigured
Aktion enthält.CustomActions: OnNodeConfigured: Script: https://
<bucket-name>
.s3.<region>
.amazonaws.com/myscript.sh
Args: - "R" - "curl" - "wget"Wenn der Bucket nicht öffentlich lesbar ist, verwenden Sie ihn
s3
als URL-Protokoll.CustomActions: OnNodeConfigured: Script: s3://
<bucket-name>
/myscript.sh
Args: - "R" - "curl" - "wget" -
Starten Sie den Cluster.
$
pcluster create-cluster --cluster-name
mycluster
\ --region<region>
--cluster-configurationconfig-file.yaml
-
Überprüfen Sie die Ausgabe.
-
Wenn Sie der
HeadNode
Konfiguration benutzerdefinierte Aktionen hinzugefügt haben, melden Sie sich beim Hauptknoten an und überprüfen Sie diecfn-init.log
Datei unter,/var/log/cfn-init.log
indem Sie den folgenden Befehl ausführen:$ 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
-
Wenn Sie der
SlurmQueues
Einstellung benutzerdefinierte Aktionen hinzugefügt haben, überprüfen Sie die Option, die sich/var/log/cloud-init.log
in einem Rechenknotencloud-init.log
befindet. CloudWatch Dient zum Anzeigen dieser Protokolle.
Sie können diese beiden Protokolle in der CloudWatch Amazon-Konsole einsehen. Weitere Informationen finden Sie unter Integration mit Amazon CloudWatch Logs.
-
Beispiel für die Aktualisierung eines benutzerdefinierten Bootstrap-Skripts für IMDSv2
Im folgenden Beispiel aktualisieren wir ein benutzerdefiniertes Bootstrap-Aktionsskript, das mit IMDSv1 für die Verwendung mit IMDSv2 verwendet wurde. Das IMDSv1-Skript ruft AMI-ID-Metadaten der EC2-Instanz ab.
#!/bin/bash AMI_ID=$(curl http://169.254.169.254/latest/meta-data/ami-id) echo $AMI_ID >> /home/ami_id.txt
Im Folgenden wird das benutzerdefinierte Bootstrap-Aktionsskript gezeigt, das so geändert wurde, dass es mit IMDSv2 kompatibel ist.
#!/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
Weitere Informationen finden Sie unter Instance-Metadaten abrufen im EC2-Benutzerhandbuch für Linux-Instances.
Beispiel für die Aktualisierung einer Konfiguration für IMDSv1
Im Folgenden finden Sie ein Beispiel für eine Clusterkonfiguration, die IMDSv1 unterstützt, wenn AWS ParallelCluster Versionen 3.7.0 und älter verwendet werden.
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