Shutdown-Skripts ausführen

Shutdown-Skripts, die Befehle ausführen, sollten Sie direkt vor Beenden oder Neustarten einer Instanz erstellen und ausführen. Das ist vor allem nützlich, wenn Sie möchten, dass automatische Skripts Instanzen starten oder beenden und andere Instanzen genug Zeit haben sollen, Aufgaben zu erledigen (Export von Logs oder Synchronisation mit anderen Systemen).

Shutdown-Skripts sind besonders nützlich bei Instanzen in einer verwalteten Instanzgruppe mit Autoscaling. Wenn das Autoscaling eine Instanz in der Gruppe schließt, wird das Shutdown-Skript ausgeführt, bevor sie tatsächlich geschlossen wird. Das Skript führt alle Aktionen aus, die Sie dafür definiert haben. Das Skript wird während der beschränkten Shutdown-Phase ausgeführt, bevor die Instanz gestoppt wird. Ihr Shutdown-Skript kann zum Beispiel verarbeitete Daten in Cloud Storage speichern oder Protokolle sichern.

Shutdown-Skripts funktionieren ähnlich wie Startskripts. Ein Großteil der Dokumentation für Startskripts gilt auch für Shutdown-Skripts.

Hinweise

Erforderliche Berechtigungen für diese Aufgabe

Zum Ausführen dieser Aufgabe benötigen Sie die folgenden Berechtigungen.

Spezifikationen

Beschränkungen

Bei der Verwendung von Shutdown-Skripts gibt es einige Beschränkungen:

  • Für Shutdown-Skripts gilt eine begrenzte Zeit, um die Ausführung zu beenden, bevor die Instanz beendet wird:
    • On-Demand-Instanzen: 90 Sekunden nach Stoppen oder Löschen einer Instanz
    • Instanzen auf Abruf: 30 Sekunden nach Beginn des vorzeitigen Beendens der Instanz
  • Compute Engine führt Shutdown-Skripts nur nach Best-Effort-Prinzip aus. In seltenen Fällen kann Compute Engine daher nicht garantieren, dass das Shutdown-Skript abgeschlossen wird.
  • Bei Linux-Instanzen können Sie Shutdown-Skripts nur mit der Image-Version v20141007 oder höher verwenden. Bei Windows Server-Instanzen ist dies nur mit Image-Version 20150310 oder höher möglich.

Aufruf des Shutdown-Skripts

Shutdown-Skripts werden durch bestimmte ACPI-Ereignisse (Advanced Configuration and Power Interface) ausgelöst, zum Beispiel Neustarts oder Abbrüche. Dazu gibt es viele Möglichkeiten, aber nur einige davon lösen das Skript aus. Das Shutdown-Skript wird als Teil der folgenden Aktionen ausgeführt:

  • Wenn eine Instanz aufgrund der an die API gesendeten Anfrage instances.delete oder instances.stop heruntergefahren wird
  • Wenn Compute Engine eine Instanz auf Abruf als Teil der vorzeitigen Beendigung stoppt
  • Wenn eine Instanz durch eine Anfrage an das Gastbetriebssystem wie sudo shutdown oder sudo reboot beendet wird
  • Wenn eine Instanz manuell heruntergefahren wird – über die GCP Console oder mit dem gcloud compute-Tool

Das Shutdown-Skript wird nicht ausgeführt, wenn die Instanz durch instances().reset zurückgesetzt wird.

Ein Shutdown-Skript kann einen beliebigen Dateityp haben. Gibt es ein Shutdown-Skript, macht Compute Engine folgendes:

  1. Sie kopiert das Skript in eine lokale Datei in der Instanz.
  2. Sie legt die Berechtigungen der Datei so an, dass sie ausgeführt werden kann.
  3. Sie führt die Datei aus, wenn die Instanz beendet wird.

So können Sie zum Beispiel ein Python-Skript statt eines Bash-Skripts verwenden. Aber denken Sie daran, dass Compute Engine das Skript so ausführt, wie es ist. Dabei kommt es nicht auf die Art des Skripts an.

Bei der Ausführung eines Skripts, das nicht in Bash geschrieben ist, müssen Sie eine Shebang-Zeile zu Beginn der Datei hinzufügen, damit das Betriebssystem erkennen kann, welcher Interpreter verwendet werden muss. Bei einem Python-Skript können Sie zum Beispiel die folgende Shebang-Zeile hinzufügen:

#!/usr/bin/python

Ausführungszeit für das Shutdown-Skript

Das Shutdown-Skript hat nur wenig Zeit, bevor die Instanz geschlossen wird oder neu startet. In diesem Zeitraum versucht Compute Engine Ihr Shutdown-Skript auszuführen. Wenn das Skript länger braucht, wird die Instanz automatisch beendet und alle laufenden Aufgaben werden abgebrochen. Wenn Sie eine Instanz durch eine Anfrage an das Gastbetriebssystem mit dem Befehl sudo shutdown beenden oder neu starten, gilt diese Einschränkung nicht.

Die Länge des Shutdowns hängt von der Art der Instanz ab. Präemptive Instanzen haben einen kürzeren Shutdown als normale Instanzen. Weitere Informationen über die Zeiteinschränkungen der einzelnen Instanzen für Shutdowns finden Sie unter Shutdown-Zeitraum.

Ihr Shutdown-Skript sollte generell innerhalb des Shutdown-Zeitraums fertig werden, damit das Betriebssystem genug Zeit hat, den eigenen Shutdown-Vorgang abzuschließen und den Zwischenspeicher auf die Festplatte zu verschieben.

Lokale Shutdown-Skripts

Ein lokales Shutdown-Skript ist auf Ihrem lokalen Computer ansässig. Sie können es als Datei verwenden oder den Inhalt direkt an Compute Engine weiterleiten.

Mit Shutdown-Skripts können so viele Aktionen wie benötigt ausgeführt werden. Wenn Sie jedoch die Datei lokal übertragen, darf Ihr Skript die Längenbeschränkung für Metadatenwerte von 256 KB nicht überschreiten. Um ein Skript zu verwenden, das die Längenbeschränkung überschreitet, sollten Sie Ihre Datei in Google Cloud Storage speichern. Weitere Informationen finden Sie unter Verwendung von Shutdown-Skripts aus Google Cloud Storage.

Shutdown-Skriptdatei angeben

Sie können eine lokale Shutdown-Skriptdatei nur durch das gcloud-Befehlszeilen-Tool verwenden.

Zur Verwendung einer lokalen Shutdown-Skriptdatei geben Sie das --metadata-from-file-Flag ein und dann das Metadaten-Schlüsselpaar shutdown-script=PATH/TO/FILE, bei dem PATH/TO/FILE für den relativen Pfad zum Shutdown-Skript steht. Beispiel:

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

Shutdown-Skriptinhalte direkt angeben

Alternativ können Sie die Inhalte Ihres Shutdown-Skripts auch direkt eingeben.

Console

In der GCP Console können Sie ein Shutdown-Skript direkt mit dem Metadatenschlüssel shutdown-script angeben:

gcloud

Verwenden Sie das gcloud-Befehlszeilen-Tool und das --metadata-Flag für die Inhalte Ihres Shutdown-Skripts und geben Sie dann das shutdown-script=CONTENTS-Schlüsselpaar ein, bei dem CONTENTS für den Inhalt Ihres Skripts steht.

gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash
> # Shuts down Apache server
> /etc/init.d/apache2 stop"

API

Beim Erstellen einer Instanz können Sie ein Shutdown-Skript als Teil der Metadaten-Property für Ihre Anfrage angeben. Verwenden Sie shutdown-script als Metadatenschlüssel:

POST https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances

{...
  "metadata": {
    "items": [
      {
       "key": "shutdown-script",
       "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop"
      }
    ]
  }...
}

Shutdown-Skript für Windows-Instanzen angeben

Sie können Shutdown-Skripte auf Windows-Instanzen mit den folgenden Metadatenschlüsseln für Windows ausführen. Wählen Sie einen der folgenden Sonderschlüssel. Jeder Schlüssel sollte zu dem Skript passen, das Sie verwenden wollen.

Sie können mehrere Shutdown-Skripts anhand verschiedener Schlüssel in Ihrer Instanz verwenden. Dabei darf jedoch jeder Schlüssel nur einmal pro virtueller Maschine eingesetzt werden.

Die folgenden Schlüssel können für lokale Shutdown-Skripts wie oben beschrieben eingesetzt werden.

cmd-Shutdown-Skripts bat-Shutdown-Skripts ps1-Shutdown-Skripts
windows-shutdown-script-cmd windows-shutdown-script-bat windows-shutdown-script-ps1

Verwendung eines Shutdown-Skripts aus Google Cloud Storage

Shutdown-Skripts können auf Google Cloud Storage gespeichert und verwendet werden. Folgen Sie der Anleitung in der Dokumentation zu Startskripts, ersetzen Sie dabei aber startup-script-url durch shutdown-script-url.

Ersetzen Sie bei Windows-Instanzen windows-startup-script-url mit windows-shutdown-script-url.

Ein Shutdown-Skript auf laufende Instanzen anwenden

Folgen Sie der Anleitung in der Dokumentation Startskript für laufende Instanzen anwenden. Ersetzen Sie die Metadatenschlüssel mit einem der folgenden:

  • shutdown-script: Geben Sie die Inhalte des Shutdown-Skripts direkt mit diesem Schlüssel ein. Mit dem gcloud-Befehlszeilen-Tool können Sie den Pfad für ein Shutdown-Skript mit dem Flag --metadata-from-file und dem Metadatenschlüssel shutdown-script angeben.
  • shutdown-script-url: Geben Sie eine Google Cloud Storage-URL mit diesem Schlüssel in die Shutdown-Skriptdatei ein.
Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...

Compute Engine-Dokumentation