Benutzerdefinierte Startskripts auf der Host-VM ausführen

Mit Cloud Workstations können Sie benutzerdefinierte Startskripts auf der Host-Workstation-VM ausführen, bevor der Workstation-Container gestartet wird. Dies ist nützlich, um eine Konfiguration auf VM-Ebene durchzuführen oder zusätzliche Software zu installieren, die außerhalb des Workstation-Containers ausgeführt werden muss.

Das Ausführen benutzerdefinierter Startskripts auf der Host-VM ist eine erweiterte Funktion. Anstatt Startskripts zu verwenden, empfehlen wir, Ihr Container-Image anzupassen.

Wenn Sie Startskripts verwenden, achten Sie darauf, dass Ihr Skript mit Änderungen am Container-Optimized OS-Image (COS) kompatibel bleibt, da die Host-VM regelmäßig Betriebssystemupdates auf Basis von COS erhält.

Hinweis

Installieren Sie die Google Cloud CLI und melden Sie sich dann mit Ihrer föderierten Identität in der gcloud-CLI an. Nach der Anmeldung initialisieren Sie die Google Cloud CLI mit dem folgenden Befehl:

gcloud init

Startscript vorbereiten

Erstellen Sie das Startscript, das auf der VM der Hostworkstation ausgeführt werden soll. Beachten Sie beim Schreiben des Skripts die folgenden Richtlinien:

  1. Cloud Workstations führt den von Ihnen angegebenen Workstation-Container sowie mehrere Systemcontainer auf der Host-Workstation-VM aus, damit Ihre Workstation ordnungsgemäß funktioniert. Alle Container werden mit der containerd-Laufzeit und dem crictl-Client ausgeführt.
  2. Führen Sie alle zusätzlichen Container, die von Ihrem Startskript gestartet wurden, mit containerd aus. Docker ist auf der Host-VM deaktiviert, um Störungen des Docker-Daemons zu vermeiden, der im Workstation-Container ausgeführt wird.
  3. Container auf Hostebene, die von Ihrem Startskript gestartet werden, können nicht mit dem Haupt-Workstation-Container interagieren. Diese direkten Interaktionen werden nicht unterstützt, da sie die IAM-Prüfungen (Identity and Access Management) umgehen.

Startskript in Cloud Storage speichern

Laden Sie Ihr Script in einen Cloud Storage-Bucket hoch und achten Sie darauf, dass das Script für das Dienstkonto zugänglich ist, das mit Ihrer Workstation verknüpft ist.

  1. Laden Sie Ihr Skript in einen Bucket hoch:

    gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAME
    

    Ersetzen Sie Folgendes:

    • LOCAL_SCRIPT_PATH: der lokale Pfad zu Ihrer Startskriptdatei.
    • BUCKET_NAME: Der Name Ihres Cloud Storage-Buckets.
    • SCRIPT_NAME: der Name, den Sie der Skriptdatei im Bucket geben möchten.
  2. Das von Ihrer Arbeitsstationskonfiguration verwendete Dienstkonto muss Berechtigungen für den Zugriff auf den Bucket und die Skriptdatei haben. Alternativ kann das Script öffentlich zugänglich sein.

Workstationkonfiguration erstellen

Wenn Sie ein benutzerdefiniertes Startscript verwenden möchten, erstellen Sie eine Workstation-Konfiguration und geben Sie den Cloud Storage-URI Ihres Scripts an.

Console

So konfigurieren Sie ein benutzerdefiniertes Startscript beim Erstellen einer Workstation-Konfiguration:

  1. Rufen Sie in der Google Cloud Console die Seite Workstation-Konfigurationen auf.

    Zu den Workstation-Konfigurationen

  2. Klicken Sie auf Hinzufügen Erstellen.

  3. Geben Sie auf der Seite Grundlegende Informationen einen Namen für die Konfiguration ein, wählen Sie einen Workstation-Cluster aus und klicken Sie auf Weiter.

  4. Konfigurieren Sie auf der Seite Maschineneinstellungen Ihre Maschineneinstellungen und klicken Sie auf Weiter.

  5. Maximieren Sie auf der Seite Umgebungseinstellungen den Abschnitt Erweiterte Containeroptionen.

  6. Geben Sie im Feld Benutzerdefiniertes Startscript den Cloud Storage-Pfad zu Ihrem Startscript ein (z. B. gs://BUCKET_NAME/SCRIPT_NAME).

  7. Führen Sie die verbleibenden Schritte aus und klicken Sie auf Erstellen.

REST

Wenn Sie ein benutzerdefiniertes Startskript über die REST API konfigurieren möchten, erstellen Sie die Workstation-Konfiguration und setzen Sie das Feld startupScriptUri in einer host.gceInstance-Nachricht auf den Cloud Storage-URI Ihres Skripts:

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "Content-Type: application/json" \
     -d '{
       "host": {
         "gceInstance": {
           "poolSize": 1,
           "startupScriptUri": "gs://BUCKET_NAME/SCRIPT_NAME",
           "serviceAccount": "SERVICE_ACCOUNT"
         }
       }
     }' \
     https://workstations.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/workstationClusters/CLUSTER_ID/workstationConfigs?workstation_config_id=CONFIG_ID

Ersetzen Sie Folgendes:

  • SERVICE_ACCOUNT: die E-Mail-Adresse des Dienstkontos, das mit der Workstation-Konfiguration verknüpft ist.
  • PROJECT_ID: Projekt-ID in Google Cloud .
  • LOCATION: die Region, in der sich Ihr Workstation-Cluster befindet.
  • CLUSTER_ID: die ID Ihres Workstation-Clusters.
  • CONFIG_ID: die ID, die Sie der neuen Workstation-Konfiguration zuweisen möchten.

Scriptausführung überprüfen

Verwenden Sie eine der folgenden Methoden, um zu prüfen, ob das Skript korrekt ausgeführt wurde:

  • Ausgabeprotokolle für seriellen Port 3: Die von Ihrem Skript generierten Ausgabeprotokolle werden automatisch an die Ausgabe für seriellen Port 3 gesendet. Den Namen der VM, die Ihrer Workstation zugewiesen ist, finden Sie in den Plattformlogs.
  • SSH-Verbindung zur VM herstellen: Sie können eine SSH-Verbindung zur Workstation-VM herstellen, um das Script bei Bedarf weiter zu debuggen.
  • Bereitschaftsprüfungen: Startskripts werden nach dem Best-Effort-Prinzip ausgeführt und verhindern nicht, dass Ihre Workstation gestartet wird. Wenn die Ausführung des Scripts lange dauert oder fehlschlägt, wird die Workstation möglicherweise trotzdem als bereit markiert. Damit die Workstation erst dann als bereit markiert wird, wenn das Script abgeschlossen ist, sollten Sie Bereitschaftsprüfungen implementieren.

Nächste Schritte