Crea ed esegui script di chiusura che eseguono i comandi immediatamente prima che un'istanza di una macchina virtuale (VM) venga arrestata o riavviata. Ciò è utile se ti affidi a script automatici per avviare e arrestare le istanze, dando loro il tempo di eseguire la pulizia o l'esecuzione di attività, come l'esportazione dei log o la sincronizzazione con altri sistemi.
Gli script di arresto sono particolarmente utili per le VM in un gruppo di istanze gestite con un gestore della scalabilità automatica. Se il gestore della scalabilità automatica arresta una VM nel gruppo, lo script di chiusura viene eseguito prima dell'arresto della VM e lo script di chiusura esegue le azioni da te definite. Lo script viene eseguito durante il periodo di arresto limitato prima dell'arresto della VM. Ad esempio, lo script di chiusura potrebbe copiare i dati elaborati in Cloud Storage o eseguire il backup di qualsiasi log.
Gli script di chiusura funzionano in modo molto simile agli script di avvio. Gran parte della documentazione relativa agli script di avvio è valida anche per gli script di chiusura.
Per le attività di arresto e riavvio, le VM eseguono sempre gli script di arresto nel seguente modo:
- Per le VM Linux, utilizzando l'utente
root
. - Per le VM Windows, utilizzando l'account
System
.
Prima di iniziare
- Scopri di più sugli script di avvio.
- Che cos'è il server di metadati.
-
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.
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
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Set a default region and zone.
- Installa Google Cloud CLI.
-
Per initialize gcloud CLI, esegui questo comando:
gcloud init
-
Crea credenziali di autenticazione locali per il tuo Account Google:
gcloud auth application-default login
- Tutte le autorizzazioni necessarie per creare un'istanza
compute.instances.setMetadata
sull'istanza- L'esecuzione degli script di chiusura è disponibile per un periodo di tempo limitato prima che l'istanza venga interrotta:
- Istanze on demand: 90 secondi dopo l'arresto o l'eliminazione di un'istanza
- Istanze prerilasciabili: 30 secondi dopo l'inizio del prerilascio delle istanze
- Compute Engine esegue gli script di chiusura solo secondo il criterio del "best effort". In rari casi, Compute Engine non può garantire il completamento dello script di chiusura.
- Su Windows, viene utilizzato il criterio di gruppo locale per avviare lo script di chiusura.
- Il pacchetto di installazione configura l'impostazione Criteri di gruppo locali
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
per avviare lo script all'arresto del sistema.
- Il pacchetto di installazione configura l'impostazione Criteri di gruppo locali
- Quando un'istanza si arresta a causa di una richiesta
instances.delete
oinstances.stop
all'API. - Quando Compute Engine interrompe un'istanza prerilasciabile nell'ambito del processo di prerilascio.
- Quando un'istanza viene arrestata tramite una richiesta al sistema operativo guest, come
sudo shutdown
osudo reboot
. - Quando
arrendi un'istanza manualmente
tramite la console Google Cloud o lo strumento
gcloud compute
. - Copia lo script in un file locale nell'istanza.
- Imposta le autorizzazioni sul file per renderlo eseguibile.
- Esegui il file quando l'istanza viene arrestata.
Vai alla pagina Crea un'istanza.
Specifica i dettagli della VM.
Espandi la sezione Opzioni avanzate.
Espandi Gestione ed esegui le seguenti operazioni:
- Nella sezione Metadati, fai clic su Aggiungi elemento.
- Nel campo Chiave, inserisci
shutdown-script
per la chiave dei metadati. - Nel campo Valore, aggiungi i contenuti dello script di chiusura.
Continua con il processo di creazione della VM.
shutdown-script
: fornisci direttamente i contenuti dello script di chiusura con questa chiave. Con Google Cloud CLI, puoi fornire il percorso di un file di script di chiusura utilizzando il flag--metadata-from-file
e la chiave di metadatishutdown-script
.shutdown-script-url
: fornisci un URL Cloud Storage al file di script di arresto anomalo con questa chiave.Connessione all'istanza ed esecuzione del comando seguente:
sudo journalctl -u google-shutdown-scripts.service
Visualizzazione dell'output tramite la porta seriale 1 nella console Google Cloud e controllo degli eventi
google_metadata_script_runner
.Desktop IAP da una workstation Windows. Per maggiori informazioni, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
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 maggiori informazioni, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
Terraform
Per utilizzare gli esempi di Terraform su questa pagina in un ambiente di sviluppo locale, installa e inizializza gcloud CLI, quindi configura le Credenziali predefinite dell'applicazione con le tue credenziali utente.
Per ulteriori informazioni, consulta Set up authentication for a local development environment.
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
Per maggiori informazioni, consulta Autenticazione per REST nella documentazione sull'autenticazione di Google Cloud.
Autorizzazioni richieste per questa attività
Per eseguire questa attività, devi disporre delle seguenti autorizzazioni:
Specifiche
Limitazioni
Esistono alcune limitazioni da considerare quando si utilizzano gli script di chiusura:
Chiamata allo script di arresto
Gli script di arresto sono attivati da determinati eventi di configurazione avanzata e Power Interface (ACPI), come riavvii o arresti. Esistono molti modi per riavviare o arrestare un'istanza, ma solo alcuni attivano l'esecuzione dello script di chiusura. Uno script di chiusura viene eseguito nell'ambito delle seguenti azioni:
Lo script di chiusura non viene eseguito se l'istanza viene reimpostata utilizzando
instances().reset
.Uno script di chiusura può essere di qualsiasi tipo. Se è presente uno script di chiusura, Compute Engine:
Ad esempio, potresti fornire uno script Python anziché uno script bash. Tieni presente che Compute Engine esegue lo script testualmente, indipendentemente dal tipo.
Per eseguire uno script che non sia bash, aggiungi una riga Shebang nella parte superiore del file per far sapere al sistema operativo quale interprete utilizzare. Ad esempio, per uno script Python, puoi aggiungere una riga Shebang come:
#!/usr/bin/python
Tempo di esecuzione dello script di chiusura
Prima che un'istanza venga arrestata o riavviata, l'esecuzione dello script di chiusura ha un periodo di tempo limitato. Durante questo periodo, Compute Engine tenta di eseguire lo script di chiusura. Se lo script richiede più tempo di questo periodo di tempo, l'istanza si arresta automaticamente e tutte le attività in esecuzione vengono terminate. Se arresti o riavvii un'istanza inviando una richiesta al sistema operativo guest con il comando
sudo shutdown
, il limite non si applica.La durata del periodo di arresto varia a seconda del tipo di istanza. Le istanze prerilasciabili hanno un periodo di arresto più breve rispetto alle istanze normali. Per saperne di più sui limiti del tempo di arresto per ogni tipo di istanza, consulta Periodo di arresto.
In generale, l'esecuzione dello script di arresto deve terminare entro il periodo di arresto in modo che il sistema operativo abbia il tempo di completare il processo di arresto e svuotare il buffer sul disco.
Usa uno script di chiusura locale
Uno script di chiusura locale è uno script presente sul computer locale. Passa in uno script di chiusura locale come file o assegnando i contenuti direttamente a Compute Engine.
Gli script di chiusura possono eseguire tutte le azioni che vuoi, ma se trasmetti il file localmente, lo script non può superare il limite di lunghezza del valore dei metadati di 256 kB. Per utilizzare uno script che supera il limite di lunghezza, archivia il file su Cloud Storage. Per ulteriori informazioni, consulta Utilizzare lo script di chiusura da Cloud Storage.
Fornisci un file di script di chiusura
Puoi trasmettere un file di script di chiusura locale solo tramite lo strumento a riga di comando
gcloud
.gcloud
Per passare in un file di script di chiusura locale, fornisci il flag
--metadata-from-file
, seguito da una coppia di chiavi dei metadati,shutdown-script=PATH/TO/FILE
, dovePATH/TO/FILE
è un percorso relativo dello script di chiusura. Ad esempio:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Per specificare direttamente uno script di chiusura, utilizza la risorsa
google_compute_instance
con il percorso dello script di chiusura nei metadati.Fornisci direttamente i contenuti dello script di chiusura
In alternativa, puoi trasmettere direttamente i contenuti dello script di chiusura.
Console
Nella console Google Cloud, specifica direttamente uno script di chiusura utilizzando la chiave di metadati
shutdown-script
:gcloud
Utilizzando Google Cloud CLI, utilizza il flag
--metadata
per fornire i contenuti dello script di chiusura, seguito dalla coppia di chiavishutdown-script=CONTENTS
, doveCONTENTS
è il contenuto dello script di chiusura.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraform
Per specificare direttamente uno script di chiusura, utilizza la risorsa
google_compute_instance
con lo script di chiusura nei metadati.REST
Nell'API, fornisci uno script di chiusura come parte della proprietà dei metadati nella tua richiesta quando crei un'istanza. Utilizza
shutdown-script
come chiave di metadati:POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances {... "metadata": { "items": [ { "key": "shutdown-script", "value": "#! /bin/bash\n\n# Shuts down Apache server\n/etc/init.d/apache2 stop" } ] }... }
Fornisci uno script di chiusura sulle istanze Windows
Esegui gli script di chiusura sulle istanze Windows utilizzando le seguenti chiavi di metadati specifiche per Windows. Scegli una delle chiavi specializzate elencate di seguito. Ogni chiave deve corrispondere al tipo di script che vuoi eseguire.
Puoi specificare più script di chiusura passando chiavi diverse all'istanza, ma ogni chiave può essere specificata una sola volta per macchina virtuale.
Le seguenti chiavi possono essere utilizzate con uno script di chiusura locale seguendo le stesse istruzioni riportate sopra.
cmd
script di chiusurabat
script di chiusuraps1
script di chiusurawindows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Usa uno script di chiusura da Cloud Storage
Puoi archiviare e utilizzare uno script di chiusura da Cloud Storage. Segui le istruzioni nella documentazione relativa agli script di avvio, ma sostituisci
startup-script-url
conshutdown-script-url
.Per le istanze Windows, sostituisci
windows-startup-script-url
conwindows-shutdown-script-url
.Applica uno script di chiusura alle istanze in esecuzione
Per aggiungere uno script di chiusura a un'istanza in esecuzione, segui le istruzioni nella documentazione relativa all'applicazione di uno script di avvio alle istanze in esecuzione, ma sostituisci le chiavi dei metadati con una delle seguenti chiavi:
Visualizzazione dell'output di uno script di chiusura
Linux
Puoi visualizzare l'output da uno script di chiusura di Linux in uno dei seguenti modi:
Windows
Visualizza l'output da uno script di chiusura di Windows Server utilizzando uno dei seguenti e controllando gli eventi
GCEMetadataScripts
: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-05-31 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" }] -