Uno script di avvio è un file che esegue attività durante il processo di avvio di un'istanza di macchina virtuale (VM). Gli script di avvio possono essere applicati a tutte
le VM in un progetto o a una singola VM. Gli script di avvio specificati dagli script di avvio dei metadati a livello di VM specificati dai metadati a livello di progetto, mentre gli script di avvio vengono eseguiti solo quando è disponibile una rete. Questo documento descrive come utilizzare gli script di avvio su istanze VM di Windows Server. Per informazioni su come aggiungere uno script di avvio a livello di progetto, consulta gcloud compute project-info add-metadata
.
Gli script di avvio di Windows devono essere script della shell dei comandi (.cmd
), PowerShell (.ps1
) o dei file di batch (.bat
) e devono avere l'estensione del file appropriata.
Se specifichi uno script di avvio utilizzando una delle procedure di questo documento, Compute Engine esegue quanto segue:
Copia lo script di avvio sulla VM
L'Pianificazione attività esegue lo script di avvio come account
LocalSystem
all'avvio della VM
Per informazioni sulle varie attività relative agli script di avvio e su quando eseguirli, consulta il documento della panoramica degli script di avvio.
Prima di iniziare
- Leggi la panoramica degli script di avvio.
- Scopri le nozioni di base sui metadati delle VM.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Chiavi dei metadati per gli script di avvio di Windows
Uno script di avvio viene trasmesso a una VM da una posizione specificata da una chiave di metadati. Una chiave dei metadati specifica se lo script di avvio viene archiviato localmente, archiviato in Cloud Storage o passato direttamente alla VM. La chiave di metadati che utilizzi potrebbe dipendere anche dalle dimensioni o dal tipo di file dello script di avvio.
La seguente tabella mostra le chiavi dei metadati che puoi utilizzare per gli script di avvio di Windows e fornisce informazioni su quale chiave utilizzare in base a posizione di archiviazione, dimensioni e tipo di file dello script di avvio.
Chiave dei metadati | Usa per |
---|---|
sysprep-specialize-script-ps1 |
Passaggio di uno script PowerShell non firmato, archiviato in locale o aggiunto direttamente e di dimensioni fino a 256 kB |
sysprep-specialize-script-cmd |
Passaggio di uno script shell dei comandi, archiviato in locale o aggiunto direttamente e di dimensioni fino a 256 kB |
sysprep-specialize-script-bat |
Passaggio di uno script di file batch archiviato in locale o aggiunto direttamente e con dimensioni fino a 256 kB |
sysprep-specialize-script-url |
Passaggio di un file batch, una shell dei comandi, uno script PowerShell/non firmato o un eseguibile archiviato in Cloud Storage e di dimensioni superiori a 256 kB. |
windows-startup-script-ps1 |
Passaggio di uno script PowerShell non firmato, archiviato in locale o aggiunto direttamente e di dimensioni fino a 256 kB |
windows-startup-script-cmd |
Passaggio di uno script shell dei comandi, archiviato in locale o aggiunto direttamente e di dimensioni fino a 256 kB |
windows-startup-script-bat |
Passaggio di uno script di file batch archiviato in locale o aggiunto direttamente e con dimensioni fino a 256 kB |
windows-startup-script-url |
Passaggio di un file batch, una shell dei comandi, uno script PowerShell/non firmato o un eseguibile archiviato in Cloud Storage e di dimensioni superiori a 256 kB. |
Per ulteriori informazioni sull'ordine di esecuzione dei vari tipi di script di avvio, consulta il repository GoogleCloudPlatform/compute-image-windows su GitHub.
Ordine di esecuzione degli script di avvio di Windows
Puoi utilizzare più script di avvio. Gli script di avvio archiviati in locale o aggiunti vengono eseguiti direttamente prima degli script di avvio archiviati in Cloud Storage. Il tipo di file contenente lo script influisce anche sull'ordine di esecuzione. La tabella seguente mostra, in base alla chiave dei metadati, l'ordine di esecuzione degli script di avvio di Windows.
Chiave dei metadati | Ordine di esecuzione |
---|---|
sysprep-specialize-script-ps1 |
Prima durante l'avvio iniziale |
sysprep-specialize-script-cmd |
Secondo durante l'avvio iniziale |
sysprep-specialize-script-bat |
Terza durante l'avvio iniziale |
sysprep-specialize-script-url |
Quarta durante l'avvio iniziale |
windows-startup-script-ps1 |
Prima durante ogni avvio dopo l'avvio iniziale |
windows-startup-script-cmd |
Secondo durante ogni avvio dopo quello iniziale |
windows-startup-script-bat |
Terzo durante ogni avvio dopo l'avvio iniziale |
windows-startup-script-url |
Quarta durante ogni avvio dopo l'avvio iniziale |
Passaggio diretto di uno script di avvio di Windows
Passa i contenuti di un file batch, della shell dei comandi o dello script di avvio di PowerShell non firmato direttamente a una VM di Windows Server. Le seguenti procedure mostrano come passare uno script PowerShell non firmato.
Console
Passare uno script di avvio di Windows direttamente a una nuova VM
Nella console Google Cloud, vai alla pagina Crea un'istanza.
Per Disco di avvio, seleziona Cambia e segui questi passaggi:
- Nella scheda Immagini pubbliche, scegli un sistema operativo Windows Server.
- Fai clic su Seleziona.
Espandi la sezione Opzioni avanzate e procedi nel seguente modo:
- Espandi la sezione Gestione.
Nella sezione Metadati, fai clic su Aggiungi elemento per impostare Chiave e Valore:
Chiave: impostata su
windows-startup-script-ps1
.Gli script di avvio passati alla VM utilizzando le chiavi dei metadati che iniziano con
windows-startup-script
vengono eseguiti a ogni avvio dopo quello iniziale della VM.Valore: aggiungi il seguente script:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script added directly.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Fai clic su Crea.
Passare uno script di avvio di Windows direttamente a una VM esistente
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
Specifica quanto segue in Metadati:
key
:windows-startup-script-ps1
value
: i contenuti dello script di avvio
Verificare lo script di avvio
Dopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti prima che lo script di avvio di esempio venga completato.
gcloud (barra)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente comando gcloud compute
instances create
:
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistente
Aggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (Prompt dei comandi)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente comando gcloud compute
instances create
:
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistente
Aggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio di Windows direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM Windows Server quando la crei utilizzando il seguente comando gcloud compute
instances create
:
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Passaggio di uno script di avvio di Windows direttamente a una VM esistente
Aggiungi lo script di avvio direttamente a una VM esistente utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata=windows-startup-script-ps1='Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature "<html><body><p>Windows startup script added directly.</p></body></html>" > C:\inetpub\wwwroot\index.html'
Sostituisci VM_NAME con il nome della VM.
Verifica dello script di avvioDopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
REST
Passare uno script di avvio di Windows direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM Windows Server quando lo crei utilizzando il seguente metodo instances.insert
.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "metadata": { "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona in cui creare la nuova VM
Passare uno script di avvio di Windows direttamente a una VM esistente
Ottieni il valore
tags.fingerprint
della VM utilizzando il metodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
Passa lo script di avvio utilizzando il valore
fingerprint
, insieme alla chiave e al valore dei metadati per lo script di avvio, in una chiamata al metodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-ps1", "value": "Import-Module servermanager\nInstall-WindowsFeature Web-Server -IncludeAllSubFeature\necho '<html><body><p>Windows startup script added directly.</p></body></html>' > C:\\inetpub\\wwwroot\\index.html" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
FINGERPRINT: il valore di
tags.fingerprint
ottenuto utilizzando il metodoinstances.get
Verificare lo script di avvio
Dopo l'avvio della VM, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti prima che lo script di avvio di esempio venga completato.
Passaggio di uno script di avvio di Windows da un file locale
Puoi archiviare uno script di avvio in un file batch locale, in uno script shell dei comandi o in uno script PowerShell non firmato sulla workstation e passare il file locale come metadati a una VM al momento della creazione. Non puoi utilizzare i file archiviati sulle VM come script di avvio.
Prima di passare uno script di avvio di Windows da un file locale a una VM:
Crea un file locale (
.ps1
) per archiviare lo script di avvio.Prendi nota del percorso relativo da gcloud CLI allo script di avvio.
Aggiungi al file il seguente script di avvio:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from a file on your local workstation.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
gcloud (barra)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e passa i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando gcloud compute instances create
con il flag --metadata-from-file
:
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (Prompt dei comandi)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e passa i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando gcloud compute instances create
con il flag --metadata-from-file
:
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ^ --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio di Windows da un file locale a una nuova VM
Crea una VM e passa i contenuti di un file locale da utilizzare come script di avvio utilizzando il comando gcloud compute instances create
con il flag --metadata-from-file
:
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Passa uno script di avvio a una VM esistente da un file locale utilizzando il seguente
comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ` --metadata-from-file=windows-startup-script-ps1=FILE_PATH
Sostituisci quanto segue:
- VM_NAME: il nome della VM
- FILE_PATH: il percorso relativo al file di script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Passaggio di uno script di avvio di Windows da Cloud Storage
Puoi archiviare uno script di avvio come file batch, script shell dei comandi, script PowerShell/non firmato o eseguibile in Cloud Storage e passarlo a una VM al momento della creazione. Dopo aver aggiunto uno script di avvio a Cloud Storage, avrai un URL da utilizzare per fare riferimento allo script di avvio quando crei una VM.
Prima di aggiungere uno script di avvio da un bucket Cloud Storage:
Crea un file per archiviare lo script di avvio. Questo esempio utilizza un file PowerShell (
.ps1
).Aggiungi al file il seguente script PowerShell, che installa un server web e crea una pagina web semplice:
# Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Windows startup script passed from Cloud Storage.</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Implicazioni per la sicurezza
Per impostazione predefinita, i proprietari e gli editor del progetto possono accedere ai file di Cloud Storage nello stesso progetto, a meno che non esistano controlli dell'accesso espliciti che lo impediscono.
Se il bucket o l'oggetto Cloud Storage è meno sicuro dei metadati, esiste il rischio di escalation dei privilegi se lo script di avvio viene modificato e la VM si riavvia. Questo perché, dopo il riavvio della VM, lo script di avvio viene eseguito come
LocalSystem
e può utilizzare le autorizzazioni dell'account di servizio associato per accedere ad altre risorse.
Console
Passare a una nuova VM uno script di avvio archiviato in Cloud Storage
Nella console Google Cloud, vai alla pagina Crea un'istanza.
Per Disco di avvio, seleziona Cambia e segui questi passaggi:
- Nella scheda Immagini pubbliche, scegli un sistema operativo Windows Server.
- Fai clic su Seleziona.
Nella sezione Identità e accesso API, seleziona un account di servizio con il ruolo Visualizzatore oggetti Storage.
Espandi la sezione Opzioni avanzate, quindi segui questi passaggi:
- Espandi la sezione Gestione.
Nella sezione Metadati, aggiungi valori per:
Chiave: la chiave dei metadati. Specifica la chiave di metadati
windows-startup-script-url
in modo che lo script venga eseguito a ogni avvio dopo quello iniziale.Valore: il valore dei metadati. Impostala sulla posizione Cloud Storage del file dello script di avvio in uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gsutil:
gs://BUCKET/FILE
Sostituisci quanto segue:
- BUCKET: nome del bucket che contiene il file di script di avvio
- FILE: nome del file di script di avvio
- URL autenticato:
Per creare la VM, fai clic su Crea.
Passare uno script di avvio archiviato in Cloud Storage a una VM esistente
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
In Metadati, aggiungi i valori seguenti:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gsutil:
gs://BUCKET/FILE
- URL autenticato:
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti prima che lo script di avvio di esempio venga completato.
gcloud (barra)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando gcloud compute instances create
. Per il valore del flag --scopes
, utilizza storage-ro
in modo che la VM possa accedere a Cloud Storage.
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019-core \ --scopes=storage-ro \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME \ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (Prompt dei comandi)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando gcloud compute instances create
. Per il valore del flag --scopes
, utilizza storage-ro
in modo che la VM possa accedere a Cloud Storage.
gcloud compute instances create VM_NAME ^ --image-project=windows-cloud ^ --image-family=windows-2019-core ^ --scopes=storage-ro ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ^ --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
gcloud (PowerShell)
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente comando gcloud compute instances create
. Per il valore del flag --scopes
, utilizza storage-ro
in modo che la VM possa accedere a Cloud Storage.
gcloud compute instances create VM_NAME ` --image-project=windows-cloud ` --image-family=windows-2019-core ` --scopes=storage-ro ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Passa uno script di avvio archiviato in Cloud Storage a una VM esistente utilizzando il seguente comando gcloud compute instances add-metadata
:
gcloud compute instances add-metadata VM_NAME ` --metadata=windows-startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
- VM_NAME: il nome della VM.
-
CLOUD_STORAGE_URL: i valori dei metadati. Imposta la posizione del file di script di avvio utilizzando uno dei seguenti formati:
-
URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
-
URI gsutil:
gs://BUCKET/FILE
-
URL autenticato:
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
REST
Passare a una nuova VM uno script di avvio archiviato in Cloud Storage
Passa uno script di avvio archiviato in Cloud Storage a una VM Windows Server utilizzando il seguente metodo instances.insert
. Al campo scopes
, aggiungi https://www.googleapis.com/auth/devstorage.read_only
in modo che la VM possa accedere a Cloud Storage.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { ... "networkInterfaces": [ { "accessConfigs": [ { "type": "ONE_TO_ONE_NAT" } ] } ], "serviceAccounts": [ { "email": "default", "scopes": [ "https://www.googleapis.com/auth/devstorage.read_only" ] } ], "metadata": { "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" }, ... ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.
ZONE: la zona in cui creare la nuova VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file di script di avvio in uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gsutil:
gs://BUCKET/FILE
- URL autenticato:
Passare uno script di avvio archiviato in Cloud Storage a una VM esistente
Ottieni il valore
tags.fingerprint
della VM utilizzando il metodoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
Passa lo script di avvio utilizzando il valore
fingerprint
, insieme alla chiave e al valore dei metadati per lo script di avvio, in una chiamata al metodoinstances.setMetadata
:POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/setMetadata { "fingerprint": FINGERPRINT, "items": [ { "key": "windows-startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto.
ZONE: la zona della VM.
VM_NAME: la zona della VM.
FINGERPRINT: il valore di
tags.fingerprint
ottenuto utilizzando il metodoinstances.get
.CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file di script di avvio in uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gsutil:
gs://BUCKET/FILE
- URL autenticato:
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 10 minuti prima che lo script di avvio di esempio venga completato.
Accesso ai metadati da uno script di avvio di Windows
In uno script di avvio, puoi accedere ai valori dei metadati. Ad esempio, puoi utilizzare lo stesso script per più VM e parametrizzare ogni script singolarmente trasferendo valori di metadati diversi a ogni VM.
Per accedere a un valore di metadati personalizzato da uno script di avvio, segui questi passaggi:
Crea uno script di avvio che esegue una query sul valore di una chiave dei metadati. Ad esempio, il seguente script di avvio di PowerShell (
.ps1
) esegue una query sul valore della chiave dei metadatifoo
.$METADATA_VALUE = (Invoke-RestMethod -Headers @{'Metadata-Flavor' = 'Google'} -Uri "http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo") # Installing IIS Import-Module servermanager Install-WindowsFeature Web-Server -IncludeAllSubFeature # Ensure the directory exists if (-not (Test-Path("C:\inetpub\wwwroot"))) {New-Item "C:\inetpub\wwwroot" -Type Directory} # Write the expanded string out to the file, overwriting the file if it already exists. "<html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html>" | Out-File -FilePath C:\inetpub\wwwroot\index.html -Encoding ascii -Force
Imposta il valore della chiave di metadati
foo
quando crei una VM utilizzando il seguente comandogcloud compute instances create
. Per questo esempio, lo script di avvio viene passato alla VM da un file locale.gcloud
gcloud compute instances create VM_NAME \ --image-project=windows-cloud \ --image-family=windows-2019 \ --metadata-from-file=windows-startup-script-ps1=FILE_PATH \ --metadata=foo=bar
Sostituisci quanto segue:
VM_NAME: il nome della VM
FILE_PATH: il percorso relativo al file di script di avvio
Per maggiori informazioni su come specificare una coppia chiave-valore dei metadati, consulta Impostare e rimuovere i metadati personalizzati.
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio restituisca il valore
foo
. Potresti dover attendere circa 10 minuti per il completamento dello script di avvio di esempio.
Riesecuzione di uno script di avvio di Windows
Esegui di nuovo uno script di avvio su una VM Windows procedendo nel seguente modo:
Esegui questo comando:
C:\Program Files\Google\Compute Engine\metadata_scripts\run_startup_scripts.cmd
Visualizzazione dell'output da uno script di avvio di Windows
Visualizza l'output da uno script di avvio di Windows Server utilizzando una delle seguenti opzioni e verificando gli eventi GCEMetadataScripts
:
Porta seriale 1 nella console Google Cloud. Per maggiori informazioni, consulta la sezione Visualizzare l'output delle porte seriali.
Log delle applicazioni del visualizzatore eventi Windows.
Desktop IAP da una workstation Windows. Per ulteriori informazioni, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
Passaggi successivi
Scopri come utilizzare gli script di avvio sulle VM Linux.
Scopri come aggiungere uno script di chiusura.
Scopri di più sui metadati delle VM.
Scopri come eseguire script di avvio su VM Windows e unirti a un dominio Microsoft AD gestito.