Crea ed esegui script di arresto che eseguono comandi subito prima dell'arresto o del riavvio di un'istanza di macchina virtuale (VM). Questa opzione è utile se ti basi su script automatici per avviare e arrestare le istanze; concede alle istanze il tempo di eseguire operazioni di pulizia o altre 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 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 prima dell'arresto della VM. Ad esempio, lo script di arresto potrebbe copiare i dati elaborati in Cloud Storage o eseguire il backup di eventuali log.
Gli script di arresto funzionano in modo molto simile agli script di avvio. Gran parte della documentazione relativa agli script di avvio si applica anche agli script di arresto.
Per le attività di arresto e riavvio, le VM eseguono sempre gli script di arresto 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 cos'è il server di metadati.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale la tua identità viene verificata per l'accesso a servizi e API di Trusted Cloud by S3NS .
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
-
After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create local authentication credentials for your user account:
gcloud auth application-default login
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
- Tutte le autorizzazioni necessarie per creare un'istanza
compute.instances.setMetadata
sull'istanza- Compute Engine esegue gli script di arresto solo secondo il criterio del "best effort". In rari casi, Compute Engine non può garantire che lo script di arresto verrà completato.
- Su Windows, i Criteri di gruppo locali vengono utilizzati per avviare lo script di arresto.
- Il pacchetto di installazione configura l'impostazione dei 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 dei criteri di gruppo locali
Operazioni eseguite da te:
Arresto o eliminazione dell'istanza.
Compute Engine arresta un'istanza nell'ambito di un'operazione di arresto o eliminazione programmata.
Compute Engine arresta una VM Spot o un'istanza preemptible nell'ambito del processo di prerilascio.
- Copia lo script in un file locale nell'istanza.
- Imposta le autorizzazioni sul file per rendere eseguibile lo script.
- Esegue 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 e segui questi passaggi:
- 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 arresto.
Continua con il processo di creazione della VM.
shutdown-script
: fornisci i contenuti dello script di arresto direttamente con questa chiave. Con Google Cloud CLI, puoi fornire il percorso di un file script di arresto utilizzando il flag--metadata-from-file
e la chiave dei metadatishutdown-script
.shutdown-script-url
: fornisci un URL di Cloud Storage che punta al file dello script di arresto con questa chiave.Connettiti all'istanza ed esegui il seguente comando:
sudo journalctl -u google-shutdown-scripts.service
Visualizza l'output tramite la porta seriale 1 nella console Trusted Cloud e controlla se sono presenti eventi
google_metadata_script_runner
.IAP Desktop da una workstation Windows. Per saperne di più, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
Porta seriale 1 nella console Trusted Cloud . Per saperne di più, consulta Visualizzazione dell'output della porta seriale.
Log applicazioni del Visualizzatore eventi di Windows.
IAP Desktop da una workstation Windows. Per saperne di più, consulta il repository GoogleCloudPlatform/iap-desktop su GitHub.
Terraform
Per utilizzare gli esempi di Terraform in 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 dell'API REST in questa pagina in un ambiente di sviluppo locale, utilizza le credenziali fornite a gcloud CLI.
After installing the Google Cloud CLI, sign in to the gcloud CLI with your federated identity and then initialize it by running the following command:
gcloud init
Per ulteriori informazioni, consulta Eseguire l'autenticazione per l'utilizzo di REST nella documentazione Trusted Cloud sull'autenticazione.
Autorizzazioni richieste per questa attività
Per eseguire questa attività, devi disporre delle seguenti autorizzazioni:
Specifiche
Le sezioni seguenti descrivono le specifiche degli script di arresto.
Limitazioni
Esistono alcune limitazioni da tenere presenti quando si utilizzano gli script di arresto:
Chiamata dello script di arresto
Gli script di arresto vengono attivati quando l'istanza si arresta dopo uno dei seguenti eventi:
Uno script di arresto può essere un file di diversi tipi. Se nell'istanza è presente uno script di arresto, Compute Engine esegue queste operazioni:
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 all'inizio del file per indicare 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 arresto
L'esecuzione degli script di arresto parte dal momento in cui Compute Engine imposta lo stato dell'istanza su
STOPPING
. Gli script devono essere completati prima che l'istanza sia completamente arrestata, ovvero quando il relativo stato diventaTERMINATED
. Il tempo necessario all'istanza per raggiungere lo statoTERMINATED
varia in base al tipo di istanza.Se gli script richiedono più tempo del periodo necessario per l'arresto dell'istanza, Compute Engine forza l'interruzione degli script, il che può comportare la perdita di dati o attività incomplete. Per evitare questo problema, arresta l'istanza dal sistema operativo guest. Questo approccio mantiene lo stato dell'istanza su
STOPPING
fino al termine dell'esecuzione degli script di arresto.Utilizza uno script di arresto locale
Uno script di arresto locale è uno script che si trova sul tuo computer locale. Passa uno script di arresto locale come file o fornendo i contenuti direttamente a Compute Engine.
Gli script di arresto possono eseguire tutte le azioni necessarie, ma se lo script viene passato localmente, 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 saperne di più, consulta Utilizza uno script di arresto da Cloud Storage.
Fornisci un file dello script di arresto
Puoi passare un file dello script di arresto locale solo tramite lo strumento a riga di comando
gcloud
.gcloud
Per passare un file dello script di arresto locale, fornisci il flag
--metadata-from-file
seguito da una coppia di chiavi di metadati,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 arresto
In alternativa, puoi passare direttamente i contenuti dello script di arresto.
Console
Nella console Trusted Cloud , specifica direttamente uno script di arresto utilizzando la chiave dei metadati
shutdown-script
:gcloud
Utilizza il flag
--metadata
di Google Cloud CLI per fornire i contenuti dello script di arresto, seguiti 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 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 arresto su istanze Windows
Esegui script di arresto su istanze Windows utilizzando le seguenti chiavi dei 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 arresto 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 arresto locale, sono valide le stesse istruzioni fornite sopra.
Script di arresto cmd
Script di arresto bat
Script di arresto ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Utilizza uno script di arresto da Cloud Storage
Puoi archiviare e utilizzare uno script di arresto da Cloud Storage. Segui le istruzioni riportate nella documentazione degli 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 arresto alle istanze in esecuzione
Per aggiungere uno script di arresto a un'istanza in esecuzione, segui le istruzioni riportate nella documentazione relativa all'applicazione di uno script di avvio alle istanze in esecuzione, ma sostituisci le chiavi dei metadati con una delle chiavi seguenti:
Visualizzazione dell'output di uno script di arresto
Linux
Puoi visualizzare l'output di uno script di arresto di Linux eseguendo una di queste 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 2025-06-30 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-06-30 UTC."],[[["Shutdown scripts execute commands right before a virtual machine (VM) instance is stopped or restarted, allowing for tasks like exporting logs or syncing with other systems."],["These scripts are particularly useful for VMs in managed instance groups with autoscalers, ensuring actions are performed before a VM is shut down by the autoscaler."],["Shutdown scripts can be local files or their contents directly provided, and for larger scripts, they can be stored in Cloud Storage and referenced via a URL."],["Compute Engine executes shutdown scripts on a best-effort basis, with a limited time window before the instance is fully stopped, during which the script should complete its tasks."],["Shutdown scripts run as the `root` user for Linux VMs and the `System` account for Windows VMs, and can be triggered by stopping, rebooting, or deleting an instance, or by Compute Engine itself."]]],[]] -