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 :
Recherchez le nom du serveur de l'API Management ou demandez-le à votre administrateur de plate-forme.
Connectez-vous et générez le fichier kubeconfig pour le serveur de l'API Management si vous n'en avez pas.
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
scriptSecretRefdans laspecde la VM doit correspondre au champmetadata.name. - Dans le secret Kubernetes, spécifiez le contenu du script de démarrage en ajoutant une clé
scriptau 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.