Crea ed esegui script di arresto che eseguono comandi appena prima dell'arresto o del riavvio di un'istanza di macchina virtuale (VM). È utile se si basano su script automatizzati per avviare e arrestare le istanze, per eseguire la pulizia o eseguire 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 autoscaler. Se il gestore della scalabilità automatica arresta una VM nel gruppo, lo script di arresto viene eseguito prima dell'arresto della VM ed esegue le azioni che hai definito. Lo script viene eseguito durante il periodo di arresto limitato precedente al la VM si arresta. Ad esempio, lo script di arresto potrebbe copiare i dati elaborati in Cloud Storage o eseguire il backup dei log.
Gli script di arresto funzionano in modo molto simile a quelli di avvio. Gran parte dei documentazione per gli script di avvio per gli script di chiusura.
Per le attività di chiusura e riavvio, le VM eseguono sempre gli script di chiusura come segue:
- 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.
- Scopri che cos'è il server di metadati.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è la procedura mediante la quale la tua identità viene verificata per l'accesso alle API e ai servizi Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su 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.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Tutte le autorizzazioni necessarie per creare un'istanza
compute.instances.setMetadata
nell'istanza- Gli script di arresto hanno un tempo limitato per completare l'esecuzione prima dell'interruzione dell'istanza:
- Istanze on demand: 90 secondi dopo l'arresto o l'eliminazione di un'istanza
- Istanze prerilasciabili: 30 secondi dopo l'inizio del prerilascio dell'istanza
- Compute Engine esegue gli script di chiusura solo su un secondo il criterio del "best effort". In rari casi, Compute Engine non garantisce per completare lo script di chiusura.
- Su Windows, i Criteri di gruppo locali vengono utilizzati per avviare lo script di arresto.
- Il pacchetto di installazione configura i Criteri di gruppo locali
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
per avviare lo script all'arresto del sistema.
- Il pacchetto di installazione configura i Criteri di gruppo locali
- Quando un'istanza viene arrestata a causa di un
Richiesta
instances.delete
oinstances.stop
richiesta all'API. - Quando Compute Engine interrompe un'istanza prerilasciabile nell'ambito della procedura di preemption.
- Quando un'istanza si arresta tramite una richiesta al sistema operativo guest, ad esempio
sudo shutdown
osudo reboot
. - Quando
chiudere manualmente un'istanza
mediante 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 i contenuti dello script di chiusura direttamente con questa chiave. Con Google Cloud CLI, puoi fornire il percorso di uno script di chiusura utilizzando il flag--metadata-from-file
eshutdown-script
chiave di metadati.shutdown-script-url
: fornisci un URL di Cloud Storage al file dello script di arresto con questa chiave.Connettiti all'istanza ed esegui il seguente comando:
sudo journalctl -u google-shutdown-scripts.service
Visualizzazione dell'output tramite la porta seriale 1 nella console Google Cloud e controllare
google_metadata_script_runner
eventi.IAP Desktop da una workstation Windows. Per maggiori informazioni, consulta il repo GoogleCloudPlatform/iap-desktop su GitHub.
Porta seriale 1 nella console Google Cloud. Per ulteriori informazioni, consulta la sezione Visualizzazione dell'output della porta seriale.
Log applicazioni di Visualizzatore eventi di Windows.
IAP Desktop da una workstation Windows. Per maggiori informazioni, consulta il repo GoogleCloudPlatform/iap-desktop su GitHub.
Terraform
Per utilizzare gli esempi di Terraform in questa pagina in un ambiente dell'ambiente di sviluppo, installare e inizializzare gcloud CLI quindi configura 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 dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite 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.
Autorizzazioni richieste per questa attività
Per eseguire questa attività, devi disporre delle seguenti autorizzazioni:
Specifiche
Limitazioni
Esistono alcune limitazioni da tenere presenti quando si utilizzano gli script di arresto:
Richiamo dello script di chiusura
Gli script di chiusura vengono attivati da alcune Eventi configurazione avanzata ed interfaccia di alimentazione (ACPI). come riavvii o interruzioni. Esistono molti modi per riavviare o interrompere un'istanza, ma solo alcuni attivano l'esecuzione dello script di arresto. Uno script di spegnimento viene eseguito nell'ambito delle seguenti azioni:
Lo script di arresto non verrà eseguito se l'istanza viene reimpostata utilizzando
instances().reset
.Uno script di arresto può essere di qualsiasi tipo di file. Se è presente uno script di chiusura presente, Compute Engine:
Ad esempio, puoi fornire uno script Python anziché uno script bash. Tieni presente che Compute Engine esegue lo script alla lettera, indipendentemente dal tipo di script.
Per eseguire uno script diverso da bash, aggiungi una riga shebang nella parte superiore del file per indicare al sistema operativo quale interprete utilizzare. Ad esempio, per un Per lo 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, lo script di chiusura ha un per un periodo di tempo limitato. Durante questo periodo, Compute Engine tenta di eseguire lo script di chiusura. Se lo script richiede più di questo periodo di tempo, l'istanza si arresta automaticamente e le attività in esecuzione vengono terminate. Se arresti o riavvii un'istanza eseguendo una una richiesta al sistema operativo guest con il comando
sudo shutdown
, non si applica.La durata del periodo di arresto varia a seconda del tipo di in esecuzione in un'istanza Compute Engine. Le istanze prerilasciabili hanno un periodo di arresto più breve rispetto alle normali istanze. Per ulteriori informazioni sui limiti di tempo di spegnimento per ogni tipo di istanza, consulta Periodo di spegnimento.
In genere, lo script di arresto deve terminare l'esecuzione entro il periodo di arresto in modo che il sistema operativo abbia il tempo di completare la procedura di arresto e svuotare i buffer sul disco.
Usa uno script di chiusura locale
Uno script di chiusura locale è uno script che risiede sul tuo computer locale. Passa uno script di arresto locale come file o fornendo i contenuti direttamente a Compute Engine.
Gli script di chiusura possono eseguire tutte le azioni di cui hai bisogno, ma se passi il file localmente, lo script non può superare il valore dei metadati di lunghezza massima di 256 kB. Per utilizzare uno script che supera il limite di lunghezza, archiviare il tuo file su Cloud Storage. Consulta Usa lo script di chiusura di Cloud Storage per ulteriori informazioni.
Fornisci un file di script di chiusura
Puoi passare un file di script di arresto locale solo tramite lo strumento della riga di comando
gcloud
.gcloud
Per passare un file di script di arresto locale, fornisci il flag
--metadata-from-file
followed by a metadata key pair,shutdown-script=PATH/TO/FILE
, dovePATH/TO/FILE
è un percorso relativo allo script di arresto. Ad esempio:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Per specificare direttamente uno script di arresto, utilizza la risorsa
google_compute_instance
con il percorso dello script di arresto 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 uno script di chiusura direttamente utilizzando il metodo Chiave dei metadati
shutdown-script
:gcloud
Utilizzando Google Cloud CLI, utilizza il flag
--metadata
per fornire i contenuti dello script di arresto, seguito dalla coppia di chiavishutdown-script=CONTENTS
, doveCONTENTS
è il contenuto dello script di arresto.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 arresto, utilizza la risorsa
google_compute_instance
con lo script di arresto nei metadati.REST
Nell'API, fornisci uno script di arresto anomalo come parte della proprietà dei metadati nella richiesta quando crei un'istanza. Utilizza
shutdown-script
come chiave dei 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 script di arresto su 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 trasferendo diverse chiavi al tuo ma ogni chiave può essere specificata solo una volta per ogni macchina virtuale.
Le seguenti chiavi possono essere utilizzate con uno script di arresto locale, seguendo le stesse istruzioni indicate 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 negli script di avvio documentazione, ma sostituisci
startup-script-url
conshutdown-script-url
.Per le istanze Windows, sostituisci
windows-startup-script-url
conwindows-shutdown-script-url
.Applicare uno script di arresto alle istanze in esecuzione
Per aggiungere uno script di chiusura a un'istanza in esecuzione, segui le istruzioni riportate nella Applicazione di uno script di avvio alle istanze in esecuzione documentazione, ma sostituisci le chiavi dei metadati con una delle seguenti chiavi:
Visualizzazione dell'output di uno script di arresto
Linux
Puoi visualizzare l'output di uno script di arresto di Linux eseguendo una delle seguenti operazioni:
Windows
Visualizza l'output di uno script di arresto di Windows Server utilizzando uno dei seguenti comandi e controllando la presenza di 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-10-14 UTC.
-