Uno script di avvio esegue attività durante il processo di avvio di una macchina virtuale (VM). Questo documento fornisce i passaggi da seguire per utilizzare gli script di avvio sulle istanze VM.
Uno script di avvio è uno strumento di automazione che esegue attività durante il processo di avvio della VM. Utilizza gli script di avvio per automatizzare le attività di configurazione e deployment delle VM su istanze nuove o esistenti, risparmiando tempo e riducendo lo sforzo di configurazione manuale.
Questo documento è destinato agli sviluppatori dei gruppi di amministratori della piattaforma o operatori di applicazioni che vogliono utilizzare gli script di avvio per le VM in un ambiente Distributed Cloud. Per saperne di più, consulta Pubblico della documentazione di GDC con air gap.
Prima di iniziare
Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud, assicurati di aver scaricato, installato,
e configurato la gdcloud CLI.
Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud o kubectl e richiedono un ambiente di sistema operativo (OS).
Recupera il percorso del file kubeconfig
Per eseguire comandi sul server API di gestione, assicurati di disporre delle seguenti risorse:
Accedi e genera il file kubeconfig per il server API di gestione, se non ne hai uno.
Utilizza il percorso del file kubeconfig del server API di gestione per sostituire
MANAGEMENT_API_SERVERin queste istruzioni.
Richiedi ruoli IAM
Per utilizzare gli script di avvio per una VM, contatta l'amministratore IAM del progetto per richiedere i seguenti ruoli sul tuo progetto:
Amministratore del progetto di macchine virtuali (
project-vm-admin): crea, modifica, elenca ed elimina le VM nello spazio dei nomi del progetto.Amministratore dei secret (
secret-admin): recupera, elenca, crea, aggiorna, elimina, applica patch e monitora i secret Kubernetes nello spazio dei nomi del progetto. Utilizza questo ruolo per specificare i secret degli script di avvio. Non hai bisogno di questo ruolo per specificare gli script di avvio in testo normale.
Tutti i ruoli VM devono essere associati allo spazio dei nomi del progetto in cui risiede la VM. Segui i passaggi per verificare l'accesso.
Formattare i nomi degli script di avvio di Windows
Gli script di avvio per le VM Windows devono seguire un formato di denominazione specifico con il nome dello script e l'estensione del file aggiunti, separati da trattini. Ad esempio,
create-directory-ps1, con create-directory come nome dello script e ps1
come estensione del file. I formati errati includono l'utilizzo di punti al posto dei
trattini e l'omissione dell'estensione del file, ad esempio create-directory.ps1 e
create-directory.
Di seguito sono riportate le estensioni di file da utilizzare per gli script di avvio di Windows:
ps1: contiene comandi di PowerShell.cmd: contiene comandi batch per l'interprete del prompt dei comandi.bat: contiene comandi batch.
Eseguire gli script di avvio di Windows in ordine
Puoi utilizzare più script di avvio. Il tipo di file contenente lo script influisce sull'ordine di esecuzione di ogni script. La tabella seguente mostra l'ordine di esecuzione degli script di avvio di Windows:
| Script Windows | Ordine di esecuzione |
|---|---|
| Script di PowerShell | Primo a ogni avvio. |
| Script batch | Secondo a ogni avvio. |
| Script di comando | Terzo a ogni avvio. |
Se due script di avvio hanno la stessa estensione di file, gli script vengono eseguiti in base all'estensione e al nome del file in ordine alfabetico. Ad esempio, se i nomi degli script di avvio sono alpha-script-ps1 e beta-script-ps1, alpha-script-ps1 viene eseguito prima di beta-script-ps1.
La seguente specifica della VM di esempio mostra l'ordine e la struttura degli script di avvio di Windows nel campo 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
# …
Passare uno script di avvio
Distributed Cloud esegue gli script di avvio in ordine alfabetico, in base al nome di ogni script di avvio.
La tabella seguente mostra il formato dello script da utilizzare in base alle dimensioni dello script:
| Dimensioni dello script | Formato dello script |
|---|---|
| Script fino a 2048 byte | Dati in chiaro |
| Script maggiori di 2048 byte | Secret Kubernetes |
Definire uno script di avvio
Per utilizzare uno script di avvio, devi aggiungere il campo startupScripts al campo spec della VM. In questo campo puoi specificare più script di avvio come testo normale o come secret Kubernetes.
L'esempio seguente specifica gli script di avvio come dati in chiaro e 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==
Esamina le seguenti considerazioni:
- Lo script di avvio viene eseguito a ogni avvio.
- Lo script di avvio ha i privilegi di root predefiniti.
- Nel secret Kubernetes, il nome di
scriptSecretRefnellaspecdella VM deve corrispondere al campometadata.name. - Nel secret Kubernetes, specifica il contenuto dello script di avvio aggiungendo una chiave
scriptal campodata.
Creare una nuova VM con uno script di avvio di Windows
Per creare una VM con uno script di avvio di Windows, segui i passaggi descritti in Creare una nuova VM con uno script di avvio.