

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
<a name="custom-bootstrap-actions-v3"></a>

Wenn Sie die [`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)Konfigurationseinstellungen [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)/definieren, AWS ParallelCluster führt unmittelbar nach dem Start des Knotens beliebigen Code aus. Wenn Sie die [`OnNodeConfigured`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)Konfigurationseinstellungen [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-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 [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)Konfigurationseinstellungen [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-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 [`ImdsSupport`](Imds-cluster-v3.md#yaml-cluster-Imds-ImdsSupport)Standardeinstellung cluster [`Imds`](Imds-cluster-v3.md#Imds-cluster-v3.title)/. `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-Aktionsskripts, damit sie mit der Cluster-Konfigurationsdatei kompatibel sind, IMDSv2 oder setzen Sie `v1.0` in der Cluster-Konfigurationsdatei den Wert [`Imds`](Imds-cluster-v3.md#Imds-cluster-v3.title)/[`ImdsSupport`](Imds-cluster-v3.md#yaml-cluster-Imds-ImdsSupport)auf.

**Warnung**  
Es liegt in Ihrer Verantwortung, die benutzerdefinierten Skripts und Argumente wie im Modell der [gemeinsamen Verantwortung](https://aws.amazon.com/compliance/shared-responsibility-model/) beschrieben zu konfigurieren. Stellen Sie sicher, dass Ihre benutzerdefinierten Bootstrap-Skripts und Argumente aus Quellen stammen, denen Sie vertrauen, dass sie vollen Zugriff auf Ihre Clusterknoten haben.

**Warnung**  
AWS ParallelCluster unterstü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 [`HeadNode`[`CustomActions`[`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)](HeadNode-v3.md#HeadNode-v3-CustomActions)](HeadNode-v3.md)//-Skript für Ihren Cluster konfigurieren [`DirectoryService`](DirectoryService-v3.md), AWS ParallelCluster konfiguriert `DirectoryService` und startet das neu`sssd`, 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 [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)vornehmen, 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 [`CustomActions`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-CustomActions)Konfigurationsabschnitten/und i [`HeadNode`[`Scheduling`](Scheduling-v3.md)](HeadNode-v3.md)//können Sie unterschiedliche Skripten für den Hauptknoten [`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)und für jede Warteschlange angeben. [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues) [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)kann 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](moving-from-v2-to-v3.md).

**Topics**
+ [Konfigurationseinstellungen zur Definition von Aktionen und Argumenten](custom-bootstrap-actions-config-v3.md)
+ [Argumente](custom-bootstrap-actions-args-v3.md)
+ [Beispielcluster mit benutzerdefinierten Bootstrap-Aktionen](custom-bootstrap-actions-example-cluster-v3.md)
+ [Beispiel für die Aktualisierung eines benutzerdefinierten Bootstrap-Skripts für IMDSv2](custom-bootstrap-actions-example-imdsv2-v3.md)
+ [Beispiel für die Aktualisierung einer Konfiguration für IMDSv1](custom-bootstrap-actions-example-imdsv1-v3.md)

# Konfigurationseinstellungen zur Definition von Aktionen und Argumenten
<a name="custom-bootstrap-actions-config-v3"></a>

Die folgenden Konfigurationseinstellungen werden verwendet, um [`HeadNode`](HeadNode-v3.md)/[`CustomActions`](HeadNode-v3.md#HeadNode-v3-CustomActions)/[`OnNodeStart`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeStart)& [`OnNodeConfigured`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeConfigured)& [`OnNodeUpdated`](HeadNode-v3.md#yaml-HeadNode-CustomActions-OnNodeUpdated)und [`Scheduling`](Scheduling-v3.md)/[`CustomActions`](Scheduling-v3.md#Scheduling-v3-SlurmQueues-CustomActions)/[`OnNodeStart`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeStart)& [`OnNodeConfigured`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-CustomActions-OnNodeConfigured)Aktionen und Argumente zu definieren.

```
HeadNode:
  [...]
  CustomActions:
    OnNodeStart:
      # Script URL. This is run before any of the bootstrap scripts are run
      Script: s3://amzn-s3-demo-bucket/on-node-start.sh
      Args:
        - arg1
    OnNodeConfigured:
      # Script URL. This is run after all the bootstrap scripts are run
      Script: s3://amzn-s3-demo-bucket/on-node-configured.sh
      Args:
        - arg1
    OnNodeUpdated:
      # Script URL. This is run after the head node update is completed.
      Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-start.sh
          Args:
            - arg1
        OnNodeConfigured:
          Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-start1.sh
          Args:
            - arg1
        - Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-configured1.sh
          Args:
            - arg1
        - Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-updated1.sh
          Args:
            - arg1
        - Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-start1.sh
              Args:
                - arg1
            - Script: s3://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-configured1.sh
              Args:
                - arg1
            - Script: s3://amzn-s3-demo-bucket/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 angeben`Sequence`, können Sie mehrere Skripts für eine benutzerdefinierte Aktion auflisten. AWS ParallelCluster unterstützt weiterhin die Konfiguration einer benutzerdefinierten Aktion mit einem einzigen Skript, ohne dies einzuschließen`Sequence`.

AWS ParallelCluster unterstü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://amzn-s3-demo-bucket/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://amzn-s3-demo-bucket/on-node-start1.sh
          Args:
            - arg1
        - Script: s3://amzn-s3-demo-bucket/on-node-start2.sh
          Args:
            - arg1
[...]
```

# Argumente
<a name="custom-bootstrap-actions-args-v3"></a>

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](moving-from-v2-to-v3.md).

# Beispielcluster mit benutzerdefinierten Bootstrap-Aktionen
<a name="custom-bootstrap-actions-example-cluster-v3"></a>

Mit den folgenden Schritten wird ein einfaches Skript erstellt, das nach der Konfiguration des Knotens ausgeführt wird `R,` `curl` und die `wget` Pakete und in den Knoten des Clusters installiert.

1. Erstellen Sie ein Skript.

   ```
   #!/bin/bash
     echo "The script has $# arguments"
     for arg in "$@"
     do
         echo "arg: ${arg}"
     done
     yum -y install "${@:1}"
   ```

1. Laden Sie das Skript mit den richtigen Berechtigungen auf Amazon S3 hoch. Wenn öffentliche Leseberechtigungen für Sie nicht geeignet sind, verwenden [`HeadNode`](HeadNode-v3.md)Sie die [`SlurmQueues`](Scheduling-v3.md#Scheduling-v3-SlurmQueues)Konfigurationsabschnitte [`Scheduling`](Scheduling-v3.md)//[`S3Access`](HeadNode-v3.md#yaml-HeadNode-Iam-S3Access)und/. [`Iam`](HeadNode-v3.md#HeadNode-v3-Iam) Weitere Informationen finden Sie unter [Arbeiten mit Amazon S3](s3_resources-v3.md).

   ```
   $ aws s3 cp --acl public-read /path/to/myscript.sh s3://amzn-s3-demo-bucket/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.

1. Aktualisieren Sie die AWS ParallelCluster Konfiguration, sodass sie die neue `OnNodeConfigured` Aktion enthält.

   ```
   CustomActions:
     OnNodeConfigured:
       Script: https://<amzn-s3-demo-bucket>.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://amzn-s3-demo-bucket/myscript.sh
       Args:
         - "R"
         - "curl"
         - "wget"
   ```

1. Starten Sie den Cluster.

   ```
   $ pcluster create-cluster --cluster-name mycluster \
     --region <region> --cluster-configuration config-file.yaml
   ```

1. Ü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 die `cfn-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 Rechenknoten `cloud-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](cloudwatch-logs-v3.md).

# Beispiel für die Aktualisierung eines benutzerdefinierten Bootstrap-Skripts für IMDSv2
<a name="custom-bootstrap-actions-example-imdsv2-v3"></a>

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 Amazon EC2 EC2-Instance 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 kompatibel mit ist. 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
```

Weitere Informationen finden Sie unter [Instance-Metadaten abrufen](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html#instancedata-meta-data-retrieval-examples) im *Amazon EC2 EC2-Benutzerhandbuch für Linux-Instances*.

# Beispiel für die Aktualisierung einer Konfiguration für IMDSv1
<a name="custom-bootstrap-actions-example-imdsv1-v3"></a>

Im Folgenden finden Sie ein Beispiel für eine Clusterkonfiguration, die unterstützt wird, IMDSv1 wenn Sie AWS ParallelCluster Versionen 3.7.0 und älter verwenden.

```
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: 11
    Networking:
      SubnetIds:
      - subnet-abcdef01234567890
```