Ein Startskript führt Aufgaben während des Startvorgangs einer VM (Virtual Machine) aus. In diesem Dokument finden Sie die Schritte zum Verwenden von Startskripts auf VM-Instanzen.
Ein Startskript ist ein Automatisierungstool, das Aufgaben während des VM-Startvorgangs ausführt. Mit Startskripts können Sie VM-Konfigurations- und Bereitstellungsaufgaben auf neuen oder vorhandenen Instanzen automatisieren. So sparen Sie Zeit und reduzieren 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 Befehlszeilenschnittstellenbefehle (Command Line Interface, CLI) verwenden möchten, müssen Sie die gdcloud CLI 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 für den 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 in dieser Anleitung
MANAGEMENT_API_SERVERdurch den Pfad zur kubeconfig-Datei des Management API-Servers.
IAM-Rollen anfordern
Wenn Sie Startskripts für eine VM verwenden möchten, bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die folgenden Rollen für Ihr Projekt zuzuweisen:
Virtual Machine Project Admin (
project-vm-admin): VMs im Projekt-Namespace erstellen, ändern, auflisten und löschen.Secret Admin (
secret-admin): Kubernetes-Secrets im Projekt-Namespace abrufen, auflisten, erstellen, aktualisieren, löschen, patchen und beobachten. Mit dieser Rolle können Sie Secrets für Startskripts angeben. Sie benötigen diese Rolle nicht, um Startskripts im Klartext 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 überprüfen.
Namen von Windows-Startskripts formatieren
Startskripts für Windows-VMs müssen einem bestimmten Namensformat folgen, wobei der Skriptname und die Dateierweiterung durch Bindestriche getrennt angehängt werden. Beispiel:
create-directory-ps1, mit create-directory als Skriptname und ps1
als Dateierweiterung. Falsche Formate sind beispielsweise die Verwendung von Punkten anstelle von
Bindestrichen und das Weglassen der Dateierweiterung, z. B. create-directory.ps1 und
create-directory.
Im Folgenden sind die Dateierweiterungen aufgeführt, die für Windows-Startskripts verwendet werden können:
ps1: Enthält PowerShell-Befehle.cmd: Enthält Batchbefehle für den Eingabeaufforderungsinterpreter.bat: Enthält Batchbefehle.
Windows-Startskripts in der richtigen Reihenfolge ausführen
Sie können mehrere Startskripts verwenden. Der Typ der Datei, die das Skript enthält, wirkt sich auf die Reihenfolge der Ausführung der einzelnen Skripts aus. In der folgenden Tabelle ist die Reihenfolge der Ausführung von Windows-Startskripts aufgeführt:
| Windows-Skript | Reihenfolge der Ausführung |
|---|---|
| PowerShell-Skript | Als Erstes bei jedem Start. |
| Batchskript | Als Zweites bei jedem Start. |
| Befehlsskript | Als Drittes bei jedem Start. |
Wenn zwei Startskripts dieselbe Dateierweiterung haben, werden die Skripts basierend auf der Dateierweiterung 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 von 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
# …
Startskript übergeben
Distributed Cloud führt Startskripts in alphabetischer Reihenfolge aus, basierend auf dem Namen der einzelnen Startskripts.
In der folgenden Tabelle ist das Skriptformat aufgeführt, das je nach Skriptgröße verwendet werden muss:
| Skriptgröße | Skriptformat |
|---|---|
| Skripts bis zu 2.048 Byte | Klartext |
| Skripts mit mehr als 2.048 Byte | Kubernetes-Secret |
Startskript 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 Start ausgeführt.
- Das Startskript hat standardmäßig Root-Berechtigungen.
- Im Kubernetes-Secret muss der Name von
scriptSecretRefin der VM-specmit dem Feldmetadata.nameübereinstimmen. - Geben Sie im Kubernetes-Secret den Inhalt des Startskripts an, indem Sie dem Feld
dataeinen Schlüsselscripthinzufügen.
Neue VM mit einem Windows-Startskript erstellen
Wenn Sie eine VM mit einem Windows-Startskript erstellen möchten, folgen Sie der Anleitung unter Neue VM mit einem Startskript erstellen.