Startskript auf Windows-VMs verwenden

Ein Startskript führt während des Startvorgangs einer virtuellen Maschine (VM) Aufgaben aus. Auf dieser Seite finden Sie die Schritte, die Sie ausführen müssen, um Startskripts auf VM-Instanzen zu verwenden.

Hinweise

Wenn Sie die Befehlszeilenbefehle (Command-Line Interface, CLI) von gdcloud verwenden möchten, müssen Sie die gdcloud-CLI heruntergeladen, installiert und konfiguriert haben. Für alle Befehle für die GDC-Air-Gap-Appliance wird die gdcloud- oder kubectl-Befehlszeile verwendet. Außerdem ist eine Betriebssystemumgebung erforderlich.

Pfad der kubeconfig-Datei abrufen

Damit Sie Befehle für den Management API-Server ausführen können, benötigen Sie die folgenden Ressourcen:

  1. Suchen Sie den Namen des Management API-Servers oder fragen Sie Ihren Plattformadministrator danach.

  2. Melden Sie sich an und generieren Sie die kubeconfig-Datei für den Management API-Server, falls Sie noch keine haben.

  3. Verwenden Sie den Pfad, um MANAGEMENT_API_SERVER{"</var>"}} in dieser Anleitung zu ersetzen.

Berechtigungen und Zugriff anfordern

Zum Ausführen der auf dieser Seite aufgeführten Aufgaben benötigen Sie die Rolle „ProjectVirtualMachine Admin“. Folgen Sie der Anleitung, um entweder Ihren Zugriff zu bestätigen oder Ihren Projekt-IAM-Administrator zu bitten, Ihnen die Rolle „Project VirtualMachine Admin“ (project-vm-admin) im Namespace des Projekts zuzuweisen, in dem sich die VM befindet.

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. Falsche Formate sind beispielsweise die Verwendung von Punkten anstelle von Bindestrichen und das Weglassen der Dateiendung, z. B. create-directory.ps1 und create-directory.

Im Folgenden sehen Sie die Dateiendungen, die für Windows-Startskripts verwendet werden:

  • 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 aus, in der die einzelnen Skripts ausgeführt werden. Die folgende Tabelle zeigt die Reihenfolge der Ausführung von Windows-Startskripts:

Windows-Script Order to run
PowerShell-Skript Als Erstes bei jedem Start.
Batchskript Als Zweites bei jedem Start.
Befehlsskript Als Drittes bei jedem Start.

Wenn zwei Start-up-Scripts dieselbe Dateiendung haben, werden die Scripts basierend auf der Dateiendung und dem Namen in alphabetischer Reihenfolge ausgeführt. Wenn Ihre Startskriptnamen beispielsweise alpha-script-ps1 und beta-script-ps1 sind, wird alpha-script-ps1 vor beta-script-ps1 ausgeführt.

Die folgende Beispiel-VM-Spezifikation zeigt die Reihenfolge und Struktur der 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

Die GDC-Appliance für Air-Gap-Umgebungen führt Startskripts in alphabetischer Reihenfolge aus, basierend auf dem Namen des jeweiligen Startskripts.

In der folgenden Tabelle sehen Sie das Skriptformat, das Sie je nach Skriptgröße verwenden müssen:

Skriptgröße Skriptformat
Skripts mit bis zu 2.048 Byte Text löschen
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 des scriptSecretRef in der VM spec mit dem Feld metadata.name übereinstimmen.
  • Geben Sie im Kubernetes-Secret den Inhalt des Startskripts an, indem Sie dem Feld data den Schlüssel script hinzufü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.