Ein Startskript führt während des Startvorgangs einer virtuellen Maschine (VM) Aufgaben aus. In diesem Dokument werden die Schritte beschrieben, die Sie ausführen müssen, um Startskripts auf VM-Instanzen zu verwenden.
Ein Startskript ist ein Automatisierungstool, das während des VM-Startvorgangs Aufgaben ausführt. Mit Startskripts können Sie VM-Konfigurations- und Bereitstellungsaufgaben auf neuen oder vorhandenen Instanzen automatisieren. Das spart Zeit und reduziert den manuellen Konfigurationsaufwand.
Dieses Dokument richtet sich an Entwickler in Plattformadministrator- oder Anwendungsoperatorgruppen, die Startskripts für VMs in einer Distributed Cloud-Umgebung verwenden möchten. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.
Hinweis
Wenn Sie gdcloud-Befehle der Befehlszeile (CLI) verwenden möchten, müssen Sie die gdcloud-Befehlszeile heruntergeladen, installiert und konfiguriert haben.
Alle Befehle für Distributed Cloud verwenden die gdcloud- oder kubectl-CLI und erfordern eine Betriebssystemumgebung.
Pfad der kubeconfig-Datei abrufen
Wenn Sie Befehle auf dem Management API-Server ausführen möchten, benötigen Sie die folgenden Ressourcen:
Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.
Ersetzen Sie
MANAGEMENT_API_SERVERin dieser Anleitung durch den Pfad zur kubeconfig-Datei des Management API-Servers.
IAM-Rollen anfordern
Wenn Sie Startskripts für eine VM verwenden möchten, wenden Sie sich an Ihren IAM-Projektadministrator, um die folgenden Rollen für Ihr Projekt anzufordern:
Virtual Machine Project Admin (
project-vm-admin): VMs im Projekt-Namespace erstellen, ändern, auflisten und löschen.Secret-Administrator (
secret-admin): Kubernetes-Secrets im Projekt-Namespace abrufen, auflisten, erstellen, aktualisieren, löschen, patchen und beobachten. Verwenden Sie diese Rolle, um Secrets für Startskripts anzugeben. Sie benötigen diese Rolle nicht, um Nur-Text-Startskripts anzugeben.
Alle VM-Rollen müssen an den Namespace des Projekts gebunden sein, in dem sich die VM befindet. Folgen Sie der Anleitung, um Ihren Zugriff zu bestätigen.
Namen von Windows-Startskripts formatieren
Startskripts für Windows-VMs müssen einem bestimmten Namensformat folgen, bei dem der Skriptname und die Dateiendung durch Bindestriche getrennt angehängt werden. Beispiel: create-directory-ps1, wobei create-directory der Skriptname und ps1 die Dateiendung ist. Zu den falschen Formaten gehören die Verwendung von Punkten anstelle von Bindestrichen und das Weglassen der Dateiendung, z. B. create-directory.ps1 und create-directory.
Im Folgenden finden Sie die Dateiendungen, die für Windows-Startskripts verwendet werden sollen:
ps1: Enthält PowerShell-Befehle.cmd: Enthält Batchbefehle für den Interpreter der Eingabeaufforderung.bat: Enthält Batchbefehle.
Windows-Startskripts in der richtigen Reihenfolge ausführen
Sie können mehrere Startskripts verwenden. Der Dateityp, der das Skript enthält, wirkt sich auf die Reihenfolge aus, in der die einzelnen Skripts ausgeführt werden. In der folgenden Tabelle ist die Reihenfolge der Ausführung von Windows-Startskripts aufgeführt:
| Windows-Script | Reihenfolge der Ausführung |
|---|---|
| PowerShell-Skript | Zuerst bei jedem Bootvorgang. |
| Batchskript | Zweitens: bei jedem Start. |
| Befehlsskript | Drittens: bei jedem Start. |
Wenn zwei Startskripts dieselbe Dateiendung haben, werden die Skripts basierend auf der Dateiendung und dem Namen in alphabetischer Reihenfolge ausgeführt. Wenn Ihre Startskripts beispielsweise alpha-script-ps1 und beta-script-ps1 heißen, wird alpha-script-ps1 vor beta-script-ps1 ausgeführt.
Die folgende VM-Spezifikation zeigt die Reihenfolge und Struktur des Windows-Startskripts im Feld startupScripts:
# …
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: hello-world-bat
script: |-
ECHO "Hello World!"
- name: list-directories-cmd
script: |-
dir C:\Windows > files.txt
# …
Startscript übergeben
Distributed Cloud führt Startskripts in alphabetischer Reihenfolge aus, basierend auf dem Namen des jeweiligen Startskripts.
In der folgenden Tabelle sehen Sie, welches Skriptformat Sie je nach Skriptgröße verwenden sollten:
| Skriptgröße | Skriptformat |
|---|---|
| Skripts mit bis zu 2.048 Byte | Text löschen |
| Skripts mit mehr als 2.048 Byte | Kubernetes-Secret |
Startscript definieren
Wenn Sie ein Startskript verwenden möchten, müssen Sie das Feld startupScripts dem Feld spec der VM hinzufügen. In diesem Feld können Sie mehrere Startskripts als Klartext oder als Kubernetes-Secret angeben.
Im folgenden Beispiel werden die Startskripts als Klartext und als Kubernetes-Secret angegeben:
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
name: "vm-test"
spec:
# …
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: list-directories-cmd
scriptSecretRef:
name: list-directories
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: list-directories
data:
script:
ZGlyIEM6XFdpbmRvd3MgID4gZmlsZXMudHh0Cg==
Beachten Sie Folgendes:
- Das Startskript wird bei jedem Bootvorgang ausgeführt.
- Das Startscript hat standardmäßig Root-Berechtigungen.
- Im Kubernetes-Secret muss der Name des
scriptSecretRefin der VMspecmit dem Feldmetadata.nameübereinstimmen. - Geben Sie im Kubernetes-Secret den Inhalt des Startskripts an, indem Sie dem Feld
dataden Schlüsselscripthinzufügen.
Neue VM mit einem Windows-Startskript erstellen
Wenn Sie eine VM mit einem Windows-Startscript erstellen möchten, folgen Sie der Anleitung unter Neue VM mit einem Startscript erstellen.