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 di un progetto
o a una singola VM. Gli script di avvio specificati dai metadati a livello di VM sostituiscono
gli script di avvio specificati dai metadati a livello di progetto e gli script di avvio
vengono eseguiti solo quando è disponibile una rete. Questo documento descrive come utilizzare gli script di avvio sulle istanze VM Linux. Per informazioni su come aggiungere uno script di avvio a livello di progetto, consulta gcloud compute project-info add-metadata
.
Per gli script di avvio di Linux, puoi utilizzare un file bash o non bash. Per utilizzare un file non bash, designa l'interprete aggiungendo #!
all'inizio del file. Ad esempio, per utilizzare uno script di avvio Python 3, aggiungi #! /usr/bin/python3
all'inizio del file.
Se specifichi uno script di avvio utilizzando una delle procedure descritte in questo documento, Compute Engine esegue le seguenti operazioni:
Copia lo script di avvio nella VM
Imposta le autorizzazioni di esecuzione sullo script di avvio
Esegue lo script di avvio come utente
root
all'avvio della VM
Per informazioni sulle varie attività relative agli script di avvio e su quando eseguirle, consulta la panoramica.
Prima di iniziare
- Leggi la panoramica degli script di avvio.
- Scopri di più sul server di metadati.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è
il processo di verifica dell'identità per poter accedere a Trusted Cloud by S3NS servizi e API.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Installa Google Cloud CLI, quindi accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud init
- Set a default region and zone.
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 accedi a gcloud CLI con la tua identità federata. Dopo aver eseguito l'accesso, inizializza Google Cloud CLI eseguendo il seguente comando:
gcloud init
Per saperne di più, consulta Autenticarsi per l'utilizzo di REST nella documentazione sull'autenticazione di Trusted Cloud .
Chiavi dei metadati per gli script di avvio Linux
Uno script di avvio viene trasmesso a una VM da una posizione specificata da una chiave di metadati. Una chiave di metadati specifica se lo script di avvio è archiviato localmente, in Cloud Storage o passato direttamente alla VM. La chiave dei metadati che utilizzi potrebbe dipendere anche dalle dimensioni dello script di avvio.
La seguente tabella mostra le chiavi dei metadati che puoi utilizzare per gli script di avvio di Linux e fornisce informazioni su quale chiave utilizzare in base alla posizione di archiviazione e alle dimensioni dello script di avvio.
Chiave dei metadati Utilizza per startup-script
Passaggio di uno script di avvio bash o non bash archiviato localmente o aggiunto direttamente e di dimensioni massime di 256 KB startup-script-url
Passaggio di uno script di avvio bash o non bash archiviato in Cloud Storage e di dimensioni superiori a 256 KB. La stringa inserita qui viene utilizzata così com'è per eseguire gcloud storage
. Sestartup-script-url
contiene caratteri di spazio, non sostituirli con%20
né aggiungere virgolette doppie (""
) alla stringastartup-script-url
.Ordine di esecuzione degli script di avvio Linux
Puoi utilizzare più script di avvio. Gli script di avvio archiviati localmente o aggiunti direttamente vengono eseguiti prima degli script di avvio archiviati in Cloud Storage. La seguente tabella mostra, in base alla chiave dei metadati, l'ordine di esecuzione degli script di avvio di Linux.
Chiave dei metadati Ordine di esecuzione startup-script
La prima volta durante ogni avvio dopo l'avvio iniziale startup-script-url
Secondi durante ogni avvio dopo l'avvio iniziale Passare direttamente uno script di avvio Linux
Puoi aggiungere i contenuti di uno script di avvio direttamente a una VM quando la crei. Le procedure riportate di seguito mostrano come creare una VM con uno script di avvio che installa Apache e crea una pagina web di base.
Console
Trasferire uno script di avvio Linux direttamente a una nuova VM
Nella Trusted Cloud console, vai alla pagina Crea un'istanza.
Per utilizzare un sistema operativo Linux:
Nel menu di navigazione, fai clic su Sistema operativo e spazio di archiviazione.
Fai clic su Cambia.
Nel riquadro Disco di avvio visualizzato, seleziona un sistema operativo Linux.
Per aggiungere direttamente uno script di avvio Linux:
Nel menu di navigazione, fai clic su Avanzate.
Nella sezione Automazione, inserisci quanto segue nel campo Script di avvio:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF
(Facoltativo) Specifica altre opzioni di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione durante la creazione dell'istanza.
Per creare e avviare l'istanza, fai clic su Crea.
Passaggio diretto di uno script di avvio Linux a una VM esistente
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Fai clic sul Nome dell'istanza.
Fai clic su Modifica.
Nella sezione Automazione, aggiungi i contenuti dello script di avvio.
Verifica dello script di avvio
Una volta avviata l'istanza, visualizza l'IP esterno in un browser web per verificare che lo script di avvio abbia creato il sito web. Potresti dover attendere circa 1 minuto per il completamento dello script di avvio di esempio.
gcloud
Trasferire uno script di avvio Linux direttamente a una nuova VM
Trasferisci i contenuti di uno script di avvio direttamente a una VM durante la creazione utilizzando il seguente comando
gcloud compute instances create
.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'
Sostituisci VM_NAME con il nome della VM.
Passaggio diretto di uno script di avvio Linux 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 \ --zone=ZONE \ --metadata=startup-script='#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script added directly.</p></body></html> EOF'
Sostituisci quanto segue:
VM_NAME: il nome della VM
ZONE: la zona della VM
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
REST
Trasferire uno script di avvio Linux direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM durante la creazione 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": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona in cui creare la VM.
Passaggio diretto di uno script di avvio Linux a una VM esistente
Ottieni il valore
metadata.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 del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM.
Trasmetti 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": "startup-script", "value": "#! /bin/bash\napt update\napt -y install apache2\ncat <<EOF > /var/www/html/index.html\n<html><body><p>Linux startup script added directly.</p></body></html>\nEOF" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto in cui esiste la VM.
ZONE: la zona della VM.
VM_NAME: il nome della VM.
FINGERPRINT: il valore
metadata.fingerprint
ottenuto utilizzando il metodoinstances.get
.
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
Passaggio di uno script di avvio Linux da un file locale
Puoi archiviare uno script di avvio in un file locale sulla workstation e passare il file locale come metadati a una VM quando la crei. Non puoi utilizzare i file archiviati nelle VM come script di avvio.
Prima di passare uno script di avvio Linux da un file locale a una VM, procedi nel seguente modo:
Crea un file locale per archiviare lo script di avvio.
Prendi nota del percorso relativo da gcloud CLI allo script di avvio.
Aggiungi il seguente script di avvio al file:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from a local file.</p></body></html> EOF
gcloud
Passare uno script di avvio Linux da un file locale a una nuova VM
Crea una VM e trasmetti 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=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH
Sostituisci quanto segue:
VM_NAME: il nome della VM
FILE_PATH: il percorso relativo del file dello script di avvio
Passare uno script di avvio Linux da un file locale a una VM esistente
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 \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH
Sostituisci quanto segue:
VM_NAME: il nome della VM
ZONE: la zona della VM
FILE_PATH: il percorso relativo del file dello script di avvio
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
Passaggio di uno script di avvio Linux da Cloud Storage
Puoi archiviare uno script di avvio in Cloud Storage e passarlo a una VM quando la crei. Dopo aver aggiunto uno script di avvio a Cloud Storage, hai un URL che puoi utilizzare per fare riferimento allo script di avvio quando crei una VM.
Prima di aggiungere uno script di avvio da un bucket Cloud Storage, esegui le seguenti operazioni:
Crea un file per archiviare lo script di avvio. Questo esempio utilizza un file bash (
.sh
).Aggiungi quanto segue al file bash, che installa Apache e crea una semplice pagina web:
#! /bin/bash apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Linux startup script from Cloud Storage.</p></body></html> EOF
Implicazioni per la sicurezza
Per impostazione predefinita, i proprietari e gli editor di progetto possono accedere ai file Cloud Storage nello stesso progetto, a meno che non siano presenti controlli dell'accesso espliciti che lo vietano.
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 viene riavviata. Questo perché dopo il riavvio della VM, lo script di avvio viene eseguito come
root
e può quindi utilizzare le autorizzazioni delaccount di serviziot collegato per accedere ad altre risorse.
Limitazioni
Console
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Nella Trusted Cloud console, vai alla pagina Crea un'istanza.
Per utilizzare un sistema operativo Linux:
Nel menu di navigazione, fai clic su Sistema operativo e spazio di archiviazione.
Nella sezione Sistema operativo e spazio di archiviazione, fai clic su Cambia. Quindi, seleziona un sistema operativo Linux.
Per consentire all'istanza di accedere al bucket Cloud Storage che contiene lo script di avvio Linux, procedi nel seguente modo:
Nel menu di navigazione, fai clic su Sicurezza.
Nell'elenco Service account, seleziona un account di servizio che abbia il ruolo IAM Visualizzatore oggetti Storage (
roles/storage.objectViewer
) nel bucket Cloud Storage.
Per aggiungere uno script di avvio Linux specificando un file in Cloud Storage:
Nel menu di navigazione, fai clic su Avanzate.
Nella sezione Metadati, fai clic su
Aggiungi elemento. Vengono visualizzati i campi Chiave e Valore.Nel campo Chiave, inserisci
startup-script-url
.Nel campo Valore, inserisci la posizione Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
URI gcloud storage:
gs://BUCKET/FILE
Sostituisci quanto segue:
BUCKET: il nome del bucket che contiene il file dello script di avvio
FILE: il nome del file dello script di avvio
- URL autenticato:
(Facoltativo) Specifica altre opzioni di configurazione. Per ulteriori informazioni, consulta Opzioni di configurazione durante la creazione dell'istanza.
Per creare e avviare l'istanza, fai clic su Crea.
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Nella console Trusted Cloud , vai alla pagina Istanze VM.
Fai clic sul Nome dell'istanza.
Fai clic su Modifica.
In Metadati, aggiungi i seguenti valori:
Chiave:
startup-script-url
Valore: la posizione Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
gcloud
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 quando la crei utilizzando il seguente comando
gcloud compute instances create
. Per il valore del flag--scope
, utilizzastorage-ro
in modo che la VM possa accedere a Cloud Storage.gcloud compute instances create VM_NAME \ --image-project=debian-cloud \ --image-family=debian-10 \ --scopes=storage-ro \ --metadata=startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
VM_NAME: il nome della VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
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 \ --zone=ZONE \ --metadata startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
VM_NAME: il nome della VM.
ZONE: la zona della VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
REST
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 quando la crei utilizzando il seguente metodo
instances.insert
. Al camposcopes
, aggiungihttps://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": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ] }, ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona in cui creare la VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta il percorso Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Ottieni il valore
metadata.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: il nome della VM
Trasmetti 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": "startup-script-url", "value": "CLOUD_STORAGE_URL" } ], ... }
Sostituisci quanto segue:
PROJECT_ID: l'ID progetto
ZONE: la zona della VM.
VM_NAME: il nome della VM.
FINGERPRINT: il valore
metadata.fingerprint
ottenuto utilizzando il metodoinstances.get
.CLOUD_STORAGE_URL: il valore dei metadati. Imposta la posizione Cloud Storage del file dello script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Verifica dello 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 1 minuto per il completamento dello script di avvio di esempio.
Accesso ai metadati da uno script di avvio Linux
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 passando valori di metadati diversi a ogni VM.
Per accedere a un valore di metadati personalizzato da uno script di avvio:
Crea uno script di avvio che esegue query sul valore di una chiave di metadati. Ad esempio, lo script di avvio del seguente file bash (
.sh
) esegue una query sul valore della chiave di metadatifoo
.#! /bin/bash METADATA_VALUE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/foo -H "Metadata-Flavor: Google") apt update apt -y install apache2 cat <<EOF > /var/www/html/index.html <html><body><p>Accessing metadata value of foo: $METADATA_VALUE</p></body></html> EOF
Imposta il valore della chiave di metadati
foo
durante la creazione di 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=debian-cloud \ --image-family=debian-10 \ --metadata-from-file=startup-script=FILE_PATH \ --metadata=foo=bar
Sostituisci quanto segue:
VM_NAME: il nome della VM
FILE_PATH: il percorso relativo del file dello script di avvio
Per ulteriori informazioni su come specificare una coppia chiave/valore dei metadati, vedi Impostazione di metadati personalizzati.
Dalla tua workstation locale, visualizza l'IP esterno in un browser web per verificare che lo script di avvio restituisca il valore di
foo
. Potresti dover attendere circa 1 minuto per il completamento dello script di avvio di esempio.
Riavvio di uno script di avvio Linux
Per eseguire nuovamente uno script di avvio:
Esegui questo comando:
sudo google_metadata_script_runner startup
Visualizzazione dell'output di uno script di avvio Linux
Puoi visualizzare l'output di uno script di avvio di Linux eseguendo una di queste operazioni:
Connettiti all'istanza ed esegui il seguente comando:
sudo journalctl -u google-startup-scripts.service
Visualizza l'output tramite la porta seriale 1 nella console Trusted Cloud e controlla se sono presenti eventi
google_metadata_script_runner
.
Passaggi successivi
Scopri come utilizzare gli script di avvio nelle VM Windows.
Scopri come risolvere i problemi di avvio delle VM.
Scopri come aggiungere uno script di arresto.
Scopri di più sull'archiviazione e il recupero dei metadati.
Salvo quando diversamente specificato, i contenuti di questa pagina sono concessi in base alla licenza Creative Commons Attribution 4.0, mentre gli esempi di codice sono concessi in base alla licenza Apache 2.0. Per ulteriori dettagli, consulta le norme del sito di Google Developers. Java è un marchio registrato di Oracle e/o delle sue consociate.
Ultimo aggiornamento 2025-07-31 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-07-31 UTC."],[[["Linux startup scripts are files that automate tasks during the startup of a virtual machine (VM) instance, which run as the `root` user after the VM boots and a network is available."],["Startup scripts can be specified at the project level or the VM level, with VM-level scripts overriding project-level scripts, and can use bash or non-bash files by adding the appropriate interpreter directive (`#!`)."],["There are multiple methods to pass startup scripts, such as directly to a VM, from a local file, or from Cloud Storage, each requiring different metadata keys like `startup-script` or `startup-script-url` depending on the storage location and size of the script."],["The execution order of multiple startup scripts is determined by the metadata key, with scripts specified by `startup-script` running before those specified by `startup-script-url` during each boot after the initial boot."],["You can access custom metadata values within a startup script to parameterize it for each individual VM, and after the VM starts, you can verify the startup script output either by checking the website it created or accessing the output logs in the VM."]]],[]] -