Utilizza uno script di avvio nelle VM Windows

Uno script di avvio esegue attività durante il processo di avvio di una macchina virtuale (VM). Questa pagina fornisce i passaggi da seguire per utilizzare gli script di avvio sulle istanze VM.

Prima di iniziare

Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud, assicurati di aver scaricato, installato e configurato la CLI gdcloud. Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud o kubectl e richiedono un ambiente del sistema operativo.

Recupera il percorso del file kubeconfig

Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:

  1. Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.

  2. Utilizza il percorso del file kubeconfig del server API Management per sostituire MANAGEMENT_API_SERVER in queste istruzioni.

Richiedere autorizzazioni e accesso

Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore macchina virtuale progetto. Segui i passaggi per verificare il tuo accesso o chiedi all'amministratore IAM progetto di assegnarti il ruolo Amministratore VirtualMachine progetto (project-vm-admin) nello spazio dei nomi del progetto in cui si trova la VM.

Formatta 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 i comandi PowerShell.
  • cmd: contiene comandi batch per l'interprete del prompt dei comandi.
  • bat: contiene comandi batch.

Esegui 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 PowerShell All'avvio.
Script batch Secondi a ogni avvio.
Script di comando Terzo avvio.

Se due script di avvio hanno la stessa estensione di file, 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 dello 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
...

Trasferire uno script di avvio

Distributed Cloud esegue gli script di avvio in ordine alfabetico, in base al nome di ogni script di avvio.

La seguente tabella mostra il formato del copione da utilizzare in base alle dimensioni del copione:

Dimensioni dello script Formato dello script
Script fino a 2048 byte Cancella testo
Script superiori a 2048 byte Secret Kubernetes

Definisci 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 testo non crittografato 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 privilegi di root predefiniti.
  • Nel secret Kubernetes, il nome di scriptSecretRef nella VM spec deve corrispondere al campo metadata.name.
  • Nel secret Kubernetes, specifica i contenuti dello script di avvio aggiungendo una chiave script al campo data.

Crea 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 Crea una nuova VM con uno script di avvio.