Un script de démarrage effectue des tâches pendant le processus de démarrage d'une machine virtuelle (VM). Cette page vous 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 CLI gdcloud
.
Toutes les commandes pour Distributed Cloud 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 :
Connectez-vous et générez le fichier kubeconfig pour le serveur d'API Management si vous n'en avez pas.
Utilisez le chemin d'accès au fichier kubeconfig du serveur de l'API Management pour remplacer
MANAGEMENT_API_SERVER
dans ces instructions.
Demander des autorisations et un accès
Pour effectuer les tâches listées sur cette page, vous devez disposer du rôle Administrateur VirtualMachine du projet. Suivez les étapes pour vérifier votre accès ou demandez à votre administrateur IAM de projet de vous attribuer le rôle Administrateur de machines virtuelles du projet (project-vm-admin
) dans l'espace de noms du projet dans lequel réside la VM.
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 dénomination 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 des tirets et l'omission de l'extension de fichier, comme create-directory.ps1
et create-directory
.
Vous trouverez ci-dessous les extensions de fichier à utiliser pour les scripts de démarrage Windows :
ps1
: contient les commandes PowerShell.cmd
: contient des commandes par lot pour l'interpréteur d'invite de commandes.bat
: contient les 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 influe sur l'ordre d'exécution de chaque script. Le tableau suivant indique 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 de lot | En deuxième à chaque démarrage. |
Script de commande | En troisième lors de 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 et du nom du fichier, par ordre alphabétique. Par exemple, si vos scripts de démarrage s'appellent 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 du script 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
Distributed Cloud exécute les scripts de démarrage par ordre alphabétique, en fonction du nom de chaque script de démarrage.
Le tableau suivant indique le format de script à utiliser en fonction de la taille de votre script :
Taille du script | Format du script |
---|---|
Scripts jusqu'à 2 048 octets | Effacer le texte |
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 sous forme de texte clair ou de secret Kubernetes.
L'exemple suivant spécifie les scripts de démarrage en texte clair et un 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 lespec
de la VM doit correspondre au champmetadata.name
. - Dans le secret Kubernetes, spécifiez le contenu du script de démarrage en ajoutant une clé
script
au champdata
.
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.