Mit Cloud Workstations können Sie benutzerdefinierte Startscripts auf der VM der Hostworkstation ausführen, bevor Ihr 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 Startupskripts zu verwenden, empfehlen wir, dass Sie Ihr Container-Image anpassen.
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 initStartscript vorbereiten
Erstellen Sie das Startskript, das auf der VM der Hostworkstation ausgeführt werden soll. Beachten Sie beim Schreiben Ihres Skripts die folgenden Richtlinien:
- 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 Laufzeit
containerdund dem Clientcrictlausgeführt. - Führen Sie alle zusätzlichen Container, die von Ihrem Startskript gestartet werden, mit
containerdaus. Docker ist auf der Host-VM deaktiviert, um Störungen des Docker-Daemons zu vermeiden, der in Ihrem Workstation-Container ausgeführt wird. - Host-Container, 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.
Startscript in Cloud Storage speichern
Laden Sie das Skript in einen Cloud Storage-Bucket hoch und sorgen Sie dafür, dass das Skript über das Dienstkonto, das mit Ihrer Workstation verknüpft ist, aufgerufen werden kann.
Laden Sie Ihr Script in einen Bucket hoch:
gcloud storage cp LOCAL_SCRIPT_PATH gs://BUCKET_NAME/SCRIPT_NAMEErsetzen 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.
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, wenn Sie eine Workstation-Konfiguration erstellen:
Rufen Sie in der Google Cloud Console die Seite Workstation-Konfigurationen auf.
Klicken Sie auf Hinzufügen Erstellen.
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.
Konfigurieren Sie auf der Seite Maschineneinstellungen die Maschineneinstellungen und klicken Sie auf Weiter.
Maximieren Sie auf der Seite Umgebungseinstellungen den Abschnitt Erweiterte Containeroptionen.
Geben Sie im Feld Benutzerdefiniertes Startscript den Cloud Storage-Pfad zu Ihrem Startscript ein (z. B.
gs://BUCKET_NAME/SCRIPT_NAME).Führen Sie die restlichen Schritte aus und klicken Sie auf Erstellen.
REST
Wenn Sie ein benutzerdefiniertes Startscript über die REST API konfigurieren möchten, erstellen Sie die Workstation-Konfiguration und legen Sie das Feld startupScriptUri in einer host.gceInstance-Nachricht auf den Cloud Storage-URI Ihres Scripts 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 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 Ihr 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 sind Best-Effort-Skripts 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.