Uno script di avvio è un file che esegue attività durante il processo di avvio di un
di macchina virtuale (VM). Gli script di avvio possono essere applicati a tutte le VM in un progetto
o a una singola VM. Script di avvio specificati dall'override dei metadati a livello di VM
solo script di avvio specificati da metadati a livello di progetto e script di avvio
quando è disponibile una rete. Questo documento descrive come utilizzare l'avvio
su istanze VM Linux. Per informazioni su come aggiungere un
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 usare una funzione
designa l'interprete aggiungendo #!
all'inizio del file. Per
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 in questo documento, Compute Engine fa quanto segue:
Copia lo script di avvio sulla 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 eseguire ciascuno di essi, consulta la Panoramica.
Prima di iniziare
- Leggi la panoramica degli script di avvio.
- Ulteriori informazioni sul server di metadati.
-
Se non l'hai già fatto, configura l'autenticazione.
Autenticazione è
Il processo di verifica dell'identità per l'accesso ai servizi e alle API di Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi eseguire l'autenticazione
Compute Engine come segue.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Nella console Google Cloud, vai alla pagina Crea un'istanza.
In Disco di avvio, seleziona Cambia e scegli un sistema operativo Linux di un sistema operativo completo.
Espandi la sezione Opzioni avanzate ed esegui le seguenti:
- Espandi la sezione Gestione.
Nella sezione Automazione, aggiungi il seguente 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
Fai clic su Crea.
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
In Automazione, aggiungi i contenuti dello script di avvio.
VM_NAME: il nome della VM
ZONE: la zona della VM
PROJECT_ID: ID progetto
ZONE: la zona in cui creare la VM
Ottieni il valore
tags.fingerprint
della VM utilizzandoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
Passa lo script di avvio utilizzando il valore
fingerprint
, insieme al comando la chiave e il valore dei metadati per lo script di avvio, in una chiamatainstances.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: ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
FINGERPRINT: il valore di
tags.fingerprint
ottenuta mediante l'uso diinstances.get
metodo
Crea un file locale in cui archiviare lo script di avvio.
Osserva il percorso relativo tra 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
VM_NAME: il nome della VM
FILE_PATH: il percorso relativo alla startup file di script
VM_NAME: il nome della VM
ZONE: la zona della VM
FILE_PATH: il percorso relativo alla startup file di script
Crea un file in cui archiviare lo script di avvio. Questo esempio utilizza un bash (
.sh
) .Aggiungi quanto segue al file bash, che installa Apache e crea un pagina web semplice:
#! /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
Per impostazione predefinita, i proprietari e gli editor del progetto possono accedere File di Cloud Storage nello stesso progetto, a meno che non siano presenti contenuti espliciti controlli di accesso che lo consentono.
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 la VM si riavvia. Questo perché, dopo il riavvio della VM, lo script di avvio viene eseguito
root
e potrà quindi utilizzare le autorizzazioni dell'account di servizio associato per accedere ad altre risorse.Nella console Google Cloud, vai alla pagina Crea un'istanza.
Specifica i dettagli della VM.
Per Disco di avvio, seleziona Cambia e scegli un'istanza un intero sistema operativo.
Nella sezione Identità e accesso API, seleziona un account di servizio che include il Visualizzatore oggetti Storage ruolo (
roles/storage.objectViewer
).Espandi la sezione Opzioni avanzate e poi esegui la seguenti:
- Espandi la sezione Gestione.
Nella sezione Metadati, aggiungi i valori per i seguenti elementi:
Chiave: la chiave dei metadati. Imposta su
startup-script-url
per aggiungere un script di avvio da Cloud Storage.Valore: il valore dei metadati. Imposta su Cloud Storage del file di 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 dello script di avvio file
- URL autenticato:
Per creare la VM, fai clic su Crea.
Nella console Google Cloud, vai alla pagina Istanze VM.
Fai clic sul nome della VM.
Fai clic su Modifica.
In Metadati, aggiungi i seguenti valori:
Chiave:
startup-script-url
Valore: il percorso Cloud Storage 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:
VM_NAME: il nome della VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta su il percorso Cloud Storage del file di script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
VM_NAME: il nome della VM.
ZONE: la zona della VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta su il percorso Cloud Storage del file di script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
PROJECT_ID: l'ID progetto.
ZONE: la zona in cui creare la nuova VM.
CLOUD_STORAGE_URL: il valore dei metadati. Imposta su il percorso Cloud Storage del file di script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Ottieni il valore
tags.fingerprint
della VM utilizzandoinstances.get
.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME
Sostituisci quanto segue:
PROJECT_ID: ID progetto
ZONE: la zona della VM
VM_NAME: la zona della VM
Passa lo script di avvio utilizzando il valore
fingerprint
, insieme al comando la chiave e il valore dei metadati per lo script di avvio, in una chiamatainstances.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: la zona della VM.
FINGERPRINT: il valore di
tags.fingerprint
ottenuta mediante l'uso diinstances.get
di controllo.CLOUD_STORAGE_URL: il valore dei metadati. Imposta su il percorso Cloud Storage del file di script di avvio utilizzando uno dei seguenti formati:
- URL autenticato:
https://storage.googleapis.com/BUCKET/FILE
- URI gcloud storage:
gs://BUCKET/FILE
- URL autenticato:
Crea uno script di avvio che esegue una query sul valore di una chiave di metadati. Per ad esempio, il seguente script di avvio del file bash (
.sh
) esegue query sul valore di la 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
quando crei una VM usando il metodo persone che seguigcloud compute instances create
comando. 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 alla startup file di script
Per ulteriori informazioni su come specificare una coppia chiave/valore di metadati, consulta Impostazione di metadati personalizzati.
Dalla workstation locale, visualizza l'IP esterno in un browser web per verificare che lo script di avvio restituisce il valore
foo
. Potresti dover attendere circa 1 minuti per il completamento dello script di avvio di esempio.Esegui questo comando:
sudo google_metadata_script_runner startup
Connessione all'istanza ed eseguendo questo comando:
sudo journalctl -u google-startup-scripts.service
Visualizzazione dell'output tramite la porta seriale 1 nella console Google Cloud e controllare
google_metadata_script_runner
eventi.Scopri come utilizzare gli script di avvio sulle VM Windows.
Scopri come risolvere i problemi relativi agli script di avvio.
Scopri come aggiungere uno script di chiusura.
Scopri di più sull'archiviazione e il recupero dei metadati.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, vedi Esegui l'autenticazione per l'utilizzo di REST nella documentazione sull'autenticazione di Google Cloud.
Chiavi dei metadati per gli script di avvio di Linux
Uno script di avvio viene passato a una VM da una posizione specificata da un chiave di metadati. Una chiave di metadati specifica se lo script di avvio è archiviato in locale, archiviati in Cloud Storage o passati direttamente alla VM. La chiave di metadati che utilizzi potrebbe anche dipendere dalle dimensioni dello script di avvio.
La tabella seguente mostra le chiavi dei metadati che puoi utilizzare per l'avvio di Linux script e fornisce informazioni sulla chiave da utilizzare in base al tipo posizione e dimensione dello script di avvio.
Chiave dei metadati Da utilizzare per startup-script
Il passaggio di uno script di avvio bash o non bash archiviato localmente o aggiunto direttamente e delle dimensioni massime di 256 kB startup-script-url
Il passaggio di uno script di avvio bash o non bash archiviato in Cloud Storage e di dimensioni superiori a 256 kB. La stringa che inserisci qui viene utilizzata così com'è per eseguire gcloud storage
. Sestartup-script-url
contiene spazi, non sostituire gli spazi con""
) alla stringastartup-script-url
.Ordine di esecuzione degli script di avvio Linux
Puoi utilizzare più script di avvio. Script di avvio archiviati localmente o aggiunti da eseguire direttamente prima degli script di avvio archiviati di archiviazione ideale in Cloud Storage. La tabella seguente 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
Prima di tutto, dopo ogni avvio startup-script-url
Il secondo 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 crei la VM. Le seguenti procedure mostrano come creare una VM con uno script di avvio che installa Apache e crea una pagina web di base.
Console
Passaggio di uno script di avvio Linux direttamente a una nuova VM
Passaggio di uno script di avvio Linux direttamente a una VM esistente
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 ha creato il sito web. Potresti dover attendere circa 1 minuti per il completamento dello script di avvio di esempio.
gcloud
Passaggio di 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
gcloud compute instances create
un comando kubectl.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 di uno script di avvio Linux direttamente a una VM esistente
Aggiungi lo script di avvio direttamente a una VM esistente utilizzando quanto segue
gcloud compute instances add-metadata
comando: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:
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 ha creato il sito web. Potresti dover attendere circa 1 minuti per il completamento dello script di avvio di esempio.
REST
Passaggio di uno script di avvio Linux direttamente a una nuova VM
Passa i contenuti di uno script di avvio direttamente a una VM durante la sua creazione utilizzando i seguenti
instances.insert
gcloud.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:
Passaggio di uno script di avvio Linux direttamente a una VM esistente
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 ha creato il sito web. Potresti dover attendere circa 1 minuti per il completamento dello script di avvio di esempio.
Passare uno script di avvio Linux da un file locale
Puoi archiviare uno script di avvio in un file locale sulla tua workstation e passare un file locale come metadati su una VM quando lo crei. Non puoi utilizzare i file archiviati sulle VM come script di avvio.
Prima di passare uno script di avvio Linux da un file locale a una VM, segui questi passaggi: seguenti:
gcloud
Passare uno script di avvio Linux da un file locale a una nuova VM
Creare una VM e passare i contenuti di un file locale da utilizzare come utilizzando lo script di avvio
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:
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 quanto segue:
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata-from-file startup-script=FILE_PATH
Sostituisci quanto segue:
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio sia stato creato sito web. Potresti dover attendere circa 1 minuto prima che venga avviato l'esempio per completare lo script.
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 lo crei. Dopo aver aggiunto uno script di avvio a Cloud Storage, disponi di 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, esegui la seguenti:
Implicazioni per la sicurezza
Limitazioni
Console
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio creato il sito web. Potresti dover attendere circa 1 minuto prima che venga visualizzato script di avvio.
gcloud
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa a una VM uno script di avvio archiviato in Cloud Storage quando per crearlo usando questo
gcloud compute instances create
un comando kubectl. Per il valore di il flag--scope
, utilizzastorage-ro
per consentire alla VM di accedere di archiviazione ideale in 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:
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Passa uno script di avvio archiviato in Cloud Storage a un VM esistente utilizzando il seguente
gcloud compute instances add-metadata
comando:gcloud compute instances add-metadata VM_NAME \ --zone=ZONE \ --metadata startup-script-url=CLOUD_STORAGE_URL
Sostituisci quanto segue:
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio creato il sito web. Potresti dover attendere circa 1 minuto prima che venga visualizzato script di avvio.
REST
Passaggio di uno script di avvio archiviato in Cloud Storage a una nuova VM
Passa a una VM uno script di avvio archiviato in Cloud Storage quando lo crei utilizzando i seguenti
instances.insert
gcloud. Allescopes
aggiungihttps://www.googleapis.com/auth/devstorage.read_only
in modo che la VM possono 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:
Passaggio di uno script di avvio archiviato in Cloud Storage a una VM esistente
Verificare lo script di avvio
Visualizza l'IP esterno in un browser web per verificare che lo script di avvio creato il sito web. Potresti dover attendere circa 1 minuto prima che venga visualizzato script di avvio.
Accesso ai metadati da uno script di avvio di Linux
In uno script di avvio puoi accedere ai valori dei metadati. Ad esempio, puoi utilizzare lo stesso script per più VM e parametrizza ogni script singolarmente passando diversi valori dei metadati a ogni VM.
Per accedere a un valore di metadati personalizzato da uno script di avvio:
Nuova esecuzione di uno script di avvio Linux
Esegui di nuovo uno script di avvio procedendo nel seguente modo:
Visualizzazione dell'output di uno script di avvio Linux
Puoi visualizzare l'output di uno script di avvio di Linux eseguendo una delle seguenti operazioni: seguenti:
Passaggi successivi
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 2024-07-25 UTC.
[{ "type": "thumb-down", "id": "hardToUnderstand", "label":"Hard to understand" },{ "type": "thumb-down", "id": "incorrectInformationOrSampleCode", "label":"Incorrect information or sample code" },{ "type": "thumb-down", "id": "missingTheInformationSamplesINeed", "label":"Missing the information/samples I need" },{ "type": "thumb-down", "id": "translationIssue", "label":"Problema di traduzione" },{ "type": "thumb-down", "id": "otherDown", "label":"Altra" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"Facile da capire" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"Il problema è stato risolto" },{ "type": "thumb-up", "id": "otherUp", "label":"Altra" }] -