Benutzerdefinierte Startskripts auf der Host-VM ausführen

Mit Cloud Workstations können Sie benutzerdefinierte Startskripts auf der VM der Hostworkstation ausführen, bevor der Workstation-Container gestartet wird. Das ist nützlich, um die VM-Konfiguration vorzunehmen 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. Statt Startskripts zu verwenden, empfehlen wir, Ihr Container-Image anzupassen.

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

Hinweis

Melden Sie sich in Ihrem Google Cloud Konto an. Wenn Sie noch kein Google Cloud-Konto haben, erstellen Sie ein Konto, um die Leistung unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

gcloud init

Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

Installieren Sie die Google Cloud CLI. Initialisieren Sie die Google Cloud CLI nach der Installation mit dem folgenden Befehl:

gcloud init

Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

Startskript vorbereiten

Erstellen Sie das Startskript, 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 angegebenen Workstation-Container sowie mehrere Systemcontainer auf der VM der Hostworkstation 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 werden, mit containerd aus. Docker ist auf der Host-VM deaktiviert, um Störungen mit dem Docker-Daemon zu vermeiden, der in Ihrem 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 Prüfungen der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) umgehen.

Startskript in Cloud Storage speichern

Laden Sie Ihr Skript in einen Cloud Storage-Bucket hoch und sorgen Sie dafür, dass es 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-Bucket.
    • SCRIPT_NAME: der Name, den Sie der Skriptdatei im Bucket geben möchten.
  2. Prüfen Sie, ob das von Ihrer Workstationkonfiguration verwendete Dienstkonto die Berechtigung hat, auf den Bucket und die Skriptdatei zuzug1reifen. Alternativ kann das Skript öffentlich zugänglich sein.

Workstationkonfiguration erstellen

Wenn Sie ein benutzerdefiniertes Startskript verwenden möchten, erstellen Sie eine Workstationkonfiguration und geben Sie den Cloud Storage-URI Ihres Skripts an.

Console

So konfigurieren Sie ein benutzerdefiniertes Startskript, wenn Sie eine Workstationkonfiguration erstellen:

  1. Rufen Sie in der Google Cloud Console die Workstationkonfigurationen Seite auf.

    Zu den Workstationkonfigurationen

  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 die Maschineneinstellungen und klicken Sie auf Weiter.

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

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

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

REST

Wenn Sie ein benutzerdefiniertes Startskript mit der REST API konfigurieren möchten, erstellen Sie die Workstationkonfiguration und legen Sie das Feld startupScriptUri in einer host.gceInstance-Nachricht auf den Cloud Storage-URI Ihres Skripts fest:

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 Workstationkonfiguration verknüpft ist.
  • PROJECT_ID: Ihre Google Cloud Projekt-ID.
  • 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 Workstationkonfiguration zuweisen möchten.

Skriptausführung prüfen

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

  • Ausgabeprotokolle des seriellen Ports 3: Ausgabeprotokolle, die von Ihrem Skript generiert werden, werden automatisch an die Ausgabe des seriellen Ports 3 gesendet. Den Namen der VM, die Ihrer Workstation zugewiesen ist, finden Sie in den Plattformprotokollen.
  • SSH-Verbindung zu Ihrer VM herstellen: Sie können eine SSH-Verbindung zu Ihrer Workstation-VM herstellen um Ihr Skript 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 Ihres Skripts lange dauert oder fehlschlägt, wird die Workstation möglicherweise trotzdem als bereit markiert. Wenn Sie sicherstellen möchten, dass die Workstation erst als bereit markiert wird, wenn Ihr Skript abgeschlossen ist, sollten Sie Bereitschaftsprüfungen implementieren.

Nächste Schritte