View a markdown version of this page

Beispiel: Führen Sie frühe Startvorgänge mit einem Cloud-Init-Boothook aus - AWS STCK

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.

Beispiel: Führen Sie frühe Startvorgänge mit einem Cloud-Init-Boothook aus

Geben Sie dieses Skript als Wert von "userData" in Ihrer Startvorlage an. Weitere Informationen finden Sie unter Arbeiten mit Amazon EC2-Benutzerdaten für AWS STCK.

Einige Konfigurationen müssen ganz am Anfang der Startsequenz ausgeführt werden, bevor der AWS PCS-Bootstrap gestartet wird und bevor ein Dienst die Hardware verwendet. Typische Fälle sind GPU-Konfigurationsbefehle, die nicht wirksam werden können, während Prozesse die GPUs halten, wie z. B. das Aktivieren des Multi-Instance NVIDIA-GPU-Modus (MIG), und Vorgänge, für deren Wirksamkeit ein Neustart erforderlich ist, z. B. das Ändern des GPU-ECC-Modus. Ein Neustart in dieser Phase ist sicher, da der AWS PCS-Bootstrap noch nicht gestartet wurde. Führen Sie keinen Neustart zu einem späteren Zeitpunkt des Startvorgangs durch, z. B. über ein Aktionsskript für den Node-Lebenszyklus: Ein Neustart dort unterbricht die AWS PCS-Bootstrap-Sequenz. Weitere Informationen finden Sie unter Bewährte Methoden für Node-Lifecycle-Aktionen in AWS STCK.

Um den Boot-Hook zu erstellen, fügen Sie Ihren Benutzerdaten einen Block mit einem Inhaltstyp text/cloud-boothook hinzu. Der Block enthält das Skript selbst. Ein Boothook ist der früheste Hook, der für Benutzerdaten verfügbar ist: Er cloud-init wird ausgeführt, sobald der Block verarbeitet wird, vor cloud-config Anweisungen wie bootcmd und vor den AWS PCS-Benutzerdatenblöcken, die den Knoten registrieren. Ein Boothook wird bei jedem Systemstart ausgeführt, einschließlich des Neustarts, den er möglicherweise selbst auslöst. Daher muss das Skript idempotent sein: Prüfen Sie zuerst den aktuellen Status und überspringen Sie bereits ausgeführte Arbeiten. Weitere Informationen dazu finden Sie in der cloud-init-Dokumentation.

Das folgende Beispiel aktiviert den MIG-Modus auf allen GPUs und erstellt die MIG-Instanzen bei jedem Start. Da noch kein GPU-Client gestartet wurde, wird die Modusänderung sofort wirksam und es ist kein Neustart erforderlich.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-boothook; charset="us-ascii" #!/bin/bash if ! nvidia-smi -i 0 -q | grep -A1 'MIG Mode' | grep -q 'Current.*Enabled'; then nvidia-smi -mig 1 fi if [ -z "$(nvidia-smi -L | grep MIG)" ]; then for i in 0 1 2 3 4 5 6 7; do nvidia-smi mig -i $i -cgi 9,14,19,19 -C done fi --==MYBOUNDARY==--

Wenn Ihr Vorgang ausgibt, dass ein Neustart erforderlich ist, starten Sie den Computer nach der Statusänderung vom selben Boothook aus neu. Beim nächsten Systemstart stellen die Idempotenz-Prüfungen fest, dass die Arbeit bereits erledigt ist, sodass der Knoten normal in den AWS PCS-Bootstrap übergeht.