Utiliser un script de démarrage sur les VM Windows

Un script de démarrage effectue des tâches pendant le processus de démarrage d'une machine virtuelle (VM). Cette page explique comment utiliser des scripts de démarrage sur des instances de VM.

Avant de commencer

Pour utiliser les commandes de l'interface de ligne de commande (CLI) gdcloud, assurez-vous d'avoir téléchargé, installé, et configuré la gdcloud CLI. Toutes les commandes de l'appliance GDC sous air gap utilisent la CLI gdcloud ou kubectl, et nécessitent un environnement de système d'exploitation (OS).

Obtenir le chemin d'accès au fichier kubeconfig

Pour exécuter des commandes sur le serveur de l'API Management, assurez-vous de disposer des ressources suivantes :

  1. Recherchez le nom du serveur de l'API Management ou demandez-le à votre administrateur de plate-forme.

  2. Connectez-vous et générez le fichier kubeconfig pour le serveur de l'API Management si vous n'en avez pas.

  3. Utilisez le chemin d'accès pour remplacer MANAGEMENT_API_SERVER{"</var>"}} dans ces instructions.

Demander des rôles IAM

Pour utiliser des scripts de démarrage pour une VM, contactez l'administrateur IAM de votre projet afin de demander les rôles suivants sur votre projet :

  • Administrateur de machine virtuelle de projet (project-vm-admin) : créez, modifiez, listez et supprimez des VM dans l'espace de noms du projet.

  • Administrateur de secrets (secret-admin) : obtenez, listez, créez, mettez à jour, supprimez, corrigez et surveillez les secrets Kubernetes dans l'espace de noms du projet. Utilisez ce rôle pour spécifier les secrets des scripts de démarrage. Vous n'avez pas besoin de ce rôle pour spécifier des scripts de démarrage en texte brut.

Tous les rôles de VM doivent être liés à l'espace de noms du projet dans lequel réside la VM. Suivez les étapes pour vérifier votre accès.

Mettre en forme les noms des scripts de démarrage Windows

Les scripts de démarrage pour les VM Windows doivent suivre un format de nommage spécifique avec le nom du script et l'extension de fichier ajoutés, séparés par des tirets. Par exemple, create-directory-ps1, avec create-directory comme nom de script et ps1 comme extension de fichier. Les formats incorrects incluent l'utilisation de points à la place de tirets et l'omission de l'extension de fichier, comme create-directory.ps1 et create-directory.

Voici les extensions de fichier à utiliser pour les scripts de démarrage Windows :

  • ps1: contient des commandes PowerShell.
  • cmd: contient des commandes par lot pour l'interpréteur d'invite de commandes.
  • bat: contient des commandes par lot.

Exécuter les scripts de démarrage Windows dans l'ordre

Vous pouvez utiliser plusieurs scripts de démarrage. Le type de fichier contenant le script a un impact sur l'ordre d'exécution de chaque script. Le tableau suivant présente l'ordre d'exécution des scripts de démarrage Windows :

Script Windows Ordre d'exécution
Script PowerShell En premier à chaque démarrage.
Script par lot En deuxième à chaque démarrage.
Script de commande En troisième à chaque démarrage.

Si deux scripts de démarrage ont la même extension de fichier, ils sont exécutés en fonction de l'extension de fichier et du nom par ordre alphabétique. Par exemple, si les noms de vos scripts de démarrage sont alpha-script-ps1 et beta-script-ps1, alpha-script-ps1 s'exécute avant beta-script-ps1.

L'exemple de spécification de VM suivant montre l'ordre et la structure des scripts de démarrage Windows dans le champ 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
...

Transmettre un script de démarrage

L'appliance GDC sous air gap exécute les scripts de démarrage par ordre alphabétique, en fonction du nom de chaque script de démarrage.

Le tableau suivant présente le format de script à utiliser en fonction de la taille de votre script :

Taille du script Format du script
Scripts jusqu'à 2 048 octets Texte clair
Scripts de plus de 2 048 octets Secret Kubernetes

Définir un script de démarrage

Pour utiliser un script de démarrage, vous devez ajouter le champ startupScripts au champ spec de la VM. Dans ce champ, vous pouvez spécifier plusieurs scripts de démarrage en texte clair ou en tant que secret Kubernetes.

L'exemple suivant spécifie les scripts de démarrage en texte clair et en tant que secret Kubernetes :

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==

Tenez compte des points suivants :

  • Le script de démarrage s'exécute à chaque démarrage.
  • Le script de démarrage dispose des droits racine par défaut.
  • Dans le secret Kubernetes, le nom de scriptSecretRef dans la spec de la VM doit correspondre au champ metadata.name.
  • Dans le secret Kubernetes, spécifiez le contenu du script de démarrage en ajoutant une clé script au champ data.

Créer une VM avec un script de démarrage Windows

Pour créer une VM avec un script de démarrage Windows, suivez les étapes décrites dans Créer une VM avec un script de démarrage.