Benutzerdefinierte Bootstrap-Aktionen - AWS ParallelCluster

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

AWS ParallelCluster kann beliebigen Code entweder vor (vor der Installation) oder nach (nach der Installation) der Haupt-Bootstrap-Aktion ausführen, wenn der Cluster erstellt wird. 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 als Root ausgeführt und kann in jeder Skriptsprache vorliegen, die vom Cluster-Betriebssystem unterstützt wird. Oft ist der Code in Bash oder Python.

Aktionen vor der Installation werden aufgerufen, bevor eine Bootstrap-Aktion für die Clusterbereitstellung gestartet wird, z. B. die KonfigurationNAT, Amazon Elastic Block Store (AmazonEBS) oder der Scheduler. Einige Aktionen vor der Installation umfassen das Ändern des Speichers, das Hinzufügen zusätzlicher Benutzer und das Hinzufügen von Paketen.

Aktionen nach der Installation werden aufgerufen, nachdem die Cluster-Bootstrap-Prozesse abgeschlossen sind. Bei Aktionen nach der Installation handelt es sich um die letzten Aktionen, die ausgeführt werden, bevor eine Instanz als vollständig konfiguriert und abgeschlossen betrachtet wird. Einige Aktionen nach der Installation 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. Dazu übergeben Sie sie in doppelten Anführungszeichen an die Aktionen vor oder nach der Installation.

Wenn eine Aktion vor oder nach der Installation fehlschlägt, schlägt auch der Instanz-Bootstrap fehl. Der Erfolg wird mit einem Exit-Code von Null (0) signalisiert. Jeder andere Exit-Code weist darauf hin, dass der Instanz-Bootstrap fehlgeschlagen ist.

Sie können zwischen Running Head- und Compute-Knoten unterscheiden. Suchen Sie nach der /etc/parallelcluster/cfnconfig Datei und werten Sie die cfn_node_type Umgebungsvariablen aus, die jeweils den Wert MasterServer "" und ComputeFleet "" für den Kopf- und den Rechenknoten haben.

#!/bin/bash . "/etc/parallelcluster/cfnconfig" case "${cfn_node_type}" in MasterServer) echo "I am the head node" >> /tmp/head.txt ;; ComputeFleet) echo "I am a compute node" >> /tmp/compute.txt ;; *) ;; esac

Konfiguration

Die folgenden Konfigurationseinstellungen werden oft verwendet, Vor-/Nachinstallationsaktionen und Argumente zu definieren.

# URL to a preinstall script. This is run before any of the boot_as_* scripts are run # (no default) pre_install = https://<bucket-name>.s3.amazonaws.com/my-pre-install-script.sh # Arguments to be passed to preinstall script # (no default) pre_install_args = argument-1 argument-2 # URL to a postinstall script. This is run after any of the boot_as_* scripts are run # (no default) post_install = https://<bucket-name>.s3.amazonaws.com/my-post-install-script.sh # Arguments to be passed to postinstall script # (no default) post_install_args = argument-3 argument-4

Argumente

Die ersten beiden Argumente ($0 und $1) sind für den Skriptnamen und die URL reserviert.

$0 => the script name $1 => s3 url $n => args set by pre/post_install_args

Beispiel

Die folgenden Schritte erstellen ein einfaches Nachinstallationsskript, mit dem die R-Pakete in einem Cluster installiert werden.

  1. Erstellen Sie ein Skript.

    #!/bin/bash echo "post-install script has $# arguments" for arg in "$@" do echo "arg: ${arg}" done yum -y install "${@:2}"
  2. Laden Sie das Skript mit den richtigen Berechtigungen auf Amazon S3 hoch. Wenn öffentliche Leseberechtigungen für Sie nicht geeignet sind, verwenden Sie einen der s3_read_write_resource Parameter s3_read_resource oder, um den Zugriff zu gewähren. 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 zu LF geändert werden, bevor das Skript auf Amazon S3 hochgeladen wird.

  3. Aktualisieren Sie die AWS ParallelCluster Konfiguration, sodass sie die neue Aktion nach der Installation enthält.

    [cluster default] ... post_install = https://<bucket-name>.s3.amazonaws.com/myscript.sh post_install_args = 'R curl wget'

    Wenn der Bucket nicht über öffentliche Leseberechtigungen verfügt, verwenden Sie ihn s3 als Protokoll. URL

    [cluster default] ... post_install = s3://<bucket-name>/myscript.sh post_install_args = 'R curl wget'
  4. Starten Sie den Cluster.

    $ pcluster create mycluster
  5. Überprüfen Sie die Ausgabe.

    $ less /var/log/cfn-init.log 2019-04-11 10:43:54,588 [DEBUG] Command runpostinstall output: post-install script has 4 arguments arg: s3://<bucket-name>/test.sh 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