Cree y ejecute scripts de apagado que ejecuten comandos justo antes de que se detenga o reinicie una instancia de máquina virtual (VM). Esto es útil si depende de scripts automatizados para iniciar y cerrar instancias, dándoles tiempo para limpiar o realizar tareas, como exportar registros o sincronizar con otros sistemas.
Los scripts de apagado son especialmente útiles para las máquinas virtuales en un grupo de instancias administrado con un escalador automático . Si el escalador automático apaga una VM en el grupo, el script de apagado se ejecuta antes de que la VM se detenga y el script de apagado realiza cualquier acción que usted defina. El script se ejecuta durante el período de apagado limitado antes de que se detenga la máquina virtual. Por ejemplo, su secuencia de comandos de apagado podría copiar los datos procesados a Cloud Storage o hacer una copia de seguridad de los registros.
Los scripts de apagado funcionan de manera muy similar a los scripts de inicio. Gran parte de la documentación sobre scripts de inicio también se aplica a los scripts de apagado.
Tanto para las tareas de apagado como de reinicio, las máquinas virtuales siempre ejecutan scripts de apagado de la siguiente manera:
- Para máquinas virtuales Linux, utilizando el usuario
root
. - Para máquinas virtuales Windows, mediante la cuenta
System
.
Antes de comenzar
- Obtenga más información sobre los scripts de inicio .
- Comprenda qué es el servidor de metadatos .
- Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:
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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
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.
If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.
- Todos los permisos necesarios para crear una instancia.
-
compute.instances.setMetadata
en la instancia - Compute Engine ejecuta scripts de apagado solo en la medida de lo posible. En casos excepcionales, Compute Engine no puede garantizar que se complete el script de apagado.
- En Windows, la Política de grupo local se utiliza para iniciar el script de apagado.
- El paquete de instalación configura la
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar la secuencia de comandos al apagar el sistema.
- El paquete de instalación configura la
Haz lo siguiente:
Compute Engine detiene una instancia como parte de una operación de detención o eliminación programada.
Compute Engine detiene una VM puntual o una instancia interrumpible como parte del proceso de preferencia .
- Copia el script a un archivo local en la instancia.
- Establece permisos en el archivo para que el script sea ejecutable.
- Ejecuta el archivo cuando la instancia se cierra.
Vaya a la página Crear una instancia .
Especifique los detalles de la máquina virtual.
Expanda la sección Opciones avanzadas .
Expanda Gestión y haga lo siguiente:
- En la sección Metadatos , haga clic en Agregar elemento .
- En el campo Clave , ingrese
shutdown-script
para la clave de metadatos. - En el campo Valor , agregue el contenido de su secuencia de comandos de apagado.
Continúe con el proceso de creación de VM.
-
shutdown-script
: proporcione el contenido del script de apagado directamente con esta clave. Con la CLI de Google Cloud, puede proporcionar la ruta a un archivo de secuencia de comandos de apagado mediante el indicador--metadata-from-file
y la clave de metadatosshutdown-script
. -
shutdown-script-url
: proporcione una URL de Cloud Storage al archivo de secuencia de comandos de apagado con esta clave. Conectándose a la instancia y ejecutando el siguiente comando:
sudo journalctl -u google-shutdown-scripts.service
Ver el resultado a través del puerto serie 1 en la consola de Google Cloud y verificar los eventos
google_metadata_script_runner
.Escritorio IAP desde una estación de trabajo Windows. Para obtener más información, consulte el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Puerto serie 1 en la consola de Google Cloud. Para obtener más información, consulte Visualización de la salida del puerto serie .
Registro de aplicaciones del Visor de eventos de Windows.
Escritorio IAP desde una estación de trabajo Windows. Para obtener más información, consulte el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa gcloud CLI y, luego, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .
Permisos necesarios para esta tarea
Para realizar esta tarea, debe tener los siguientes permisos :
Presupuesto
Las siguientes secciones describen las especificaciones para los scripts de apagado.
Limitaciones
Hay algunas limitaciones a tener en cuenta al utilizar scripts de apagado:
Invocación del script de apagado
Los scripts de apagado se activan cuando la instancia se cierra después de que ocurra cualquiera de los siguientes eventos:
Un script de apagado puede ser de cualquier tipo de archivo. Si hay un script de apagado presente en la instancia, Compute Engine hace lo siguiente:
Podría, por ejemplo, proporcionar una secuencia de comandos Python en lugar de una secuencia de comandos bash. Tenga en cuenta que Compute Engine ejecuta el script palabra por palabra, independientemente del tipo de script.
Para ejecutar un script que no sea bash, agregue una línea shebang en la parte superior del archivo para que el sistema operativo sepa qué intérprete usar. Por ejemplo, para un script de Python, puedes agregar una línea shebang como:
#!/usr/bin/python
Tiempo de ejecución del script de apagado
Tus scripts de apagado comienzan a ejecutarse cuando Compute Engine establece el estado de la instancia en
STOPPING
. Sus scripts deben completarse antes de que la instancia se detenga por completo, que es cuando su estado cambia aTERMINATED
. El tiempo que tarda la instancia en alcanzar el estadoTERMINATED
varía según el tipo de instancia .Si sus secuencias de comandos tardan más que el tiempo que tarda la instancia en detenerse, Compute Engine detiene las secuencias de comandos a la fuerza, lo que puede provocar pérdida de datos o tareas incompletas. Para evitar esto, detenga la instancia desde su sistema operativo invitado . Este enfoque mantiene el estado de la instancia en
STOPPING
hasta que los scripts de apagado terminen de ejecutarse.Utilice un script de apagado local
Un script de apagado local es un script que reside en su computadora local. Pase una secuencia de comandos de apagado local, ya sea como un archivo o entregando el contenido directamente a Compute Engine.
Los scripts de apagado pueden realizar tantas acciones como necesite, pero si pasa el archivo localmente, su script no puede exceder el límite de longitud del valor de metadatos de 256 KB. Para usar una secuencia de comandos que exceda el límite de longitud, almacene su archivo en Cloud Storage. Consulta Usar secuencia de comandos de apagado de Cloud Storage para obtener más información.
Proporcionar un archivo de secuencia de comandos de apagado
Solo puedes pasar un archivo de secuencia de comandos de apagado local a través de la herramienta de línea de comandos
gcloud
.nube de gcloud
Para pasar un archivo de script de apagado local, proporcione el indicador
--metadata-from-file
, seguido de un par de claves de metadatos,shutdown-script=PATH/TO/FILE
, dondePATH/TO/FILE
es una ruta relativa al script de apagado. Por ejemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraformar
Para especificar una secuencia de comandos de apagado directamente, use el recurso
google_compute_instance
con la ruta a la secuencia de comandos de apagado en los metadatos.Proporcionar el contenido del script de apagado directamente
Alternativamente, puede pasar el contenido de su secuencia de comandos de apagado directamente.
Consola
En la consola de Google Cloud, especifica un script de apagado directamente usando la clave de metadatos
shutdown-script
:nube de gcloud
Usando la CLI de Google Cloud, use el indicador
--metadata
para proporcionar el contenido de su secuencia de comandos de apagado, seguido del par de clavesshutdown-script=CONTENTS
, dondeCONTENTS
es el contenido de su secuencia de comandos de apagado.gcloud compute instances create example-instance --metadata shutdown-script="#! /bin/bash > # Shuts down Apache server > /etc/init.d/apache2 stop"
Terraformar
Para especificar una secuencia de comandos de apagado directamente, use el recurso
google_compute_instance
con la secuencia de comandos de apagado en los metadatos.DESCANSAR
En la API, proporcione una secuencia de comandos de apagado como parte de la propiedad de metadatos en su solicitud cuando cree una instancia. Utilice
shutdown-script
como clave de metadatos: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" } ] }... }
Proporcionar un script de apagado en instancias de Windows
Ejecute scripts de apagado en instancias de Windows utilizando las siguientes claves de metadatos específicas de Windows. Elija entre cualquiera de las claves especializadas que se enumeran a continuación. Cada clave debe coincidir con el tipo de script que desea ejecutar.
Puede especificar varios scripts de apagado pasando diferentes claves a su instancia, pero cada clave solo se puede especificar una vez por máquina virtual.
Las siguientes claves se pueden utilizar con un script de apagado local, siguiendo las mismas instrucciones anteriores.
scripts de apagado cmd
scripts de apagado bat
guiones de apagado ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Utilice una secuencia de comandos de apagado de Cloud Storage
Puede almacenar y utilizar una secuencia de comandos de apagado desde Cloud Storage. Siga las instrucciones en la documentación de los scripts de inicio, pero reemplace
startup-script-url
conshutdown-script-url
.Para instancias de Windows, reemplace
windows-startup-script-url
conwindows-shutdown-script-url
.Aplicar un script de apagado a instancias en ejecución
Para agregar una secuencia de comandos de apagado a una instancia en ejecución, siga las instrucciones en la documentación Aplicación de una secuencia de comandos de inicio a instancias en ejecución, pero reemplace las claves de metadatos con una de las siguientes claves:
Ver el resultado de un script de apagado
linux
Puede ver el resultado de un script de apagado de Linux realizando cualquiera de las siguientes acciones:
ventanas
Vea el resultado de un script de cierre de Windows Server utilizando cualquiera de los siguientes y verificando eventos
GCEMetadataScripts
:A menos que se indique lo contrario, el contenido de esta página está sujeto a la licencia Reconocimiento 4.0 de Creative Commons y las muestras de código están sujetas a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio web de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2025-04-17 (UTC).
-