Crea y ejecuta secuencias de comandos de apagado que ejecuten comandos justo antes de que se detenga o reinicie una instancia de máquina virtual (VM). Esto resulta útil si dependes de secuencias de comandos automatizadas para iniciar y apagar instancias, ya que permite que las instancias tengan tiempo para limpiar o realizar tareas, como exportar registros o sincronizarse con otros sistemas.
Los scripts de cierre son especialmente útiles para las VMs de un grupo de instancias gestionado con un escalador automático. Si el escalador automático apaga una VM del grupo, la secuencia de comandos de apagado se ejecuta antes de que la VM se detenga y realiza las acciones que definas. La secuencia de comandos se ejecuta durante el periodo de apagado limitado antes de que se detenga la máquina virtual. Por ejemplo, tu secuencia de comandos de cierre puede copiar los datos procesados en Cloud Storage o crear una copia de seguridad de los registros.
Las secuencias de comandos de apagado funcionan de forma muy similar a las de inicio. Gran parte de la documentación sobre secuencias de comandos de inicio también se aplica a las secuencias de comandos de apagado.
Tanto en las tareas de apagado como en las de reinicio, las VMs siempre ejecutan las secuencias de comandos de apagado de la siguiente manera:
- En las VMs Linux, con el usuario
root
. - En las VMs Windows, mediante la cuenta
System
.
Antes de empezar
- Consulta información sobre los scripts de inicio.
- Entender qué es el servidor de metadatos.
-
Si aún no lo has hecho, configura la autenticación.
La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos 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
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- Set a default region and zone.
Terraform
Para usar las muestras de Terraform de esta página en un entorno de desarrollo local, instala e inicializa la CLI de gcloud y, a continuación, configura las credenciales predeterminadas de la aplicación con tus credenciales de usuario.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
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, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
Para obtener más información, consulta Set up authentication for a local development environment.
REST
Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.
Instala Google Cloud CLI.
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .
Permisos que se necesitan para completar esta tarea
Para realizar esta tarea, debes tener los siguientes permisos:
- Todos los permisos necesarios para crear una instancia
compute.instances.setMetadata
en la instancia
Especificaciones
En las secciones siguientes se describen las especificaciones de las secuencias de comandos de apagado.
Limitaciones
Hay algunas limitaciones que debes tener en cuenta al usar secuencias de comandos de apagado:
- Compute Engine ejecuta las secuencias de comandos de cierre solo de la mejor forma posible. En casos excepcionales, Compute Engine no puede garantizar que se complete la secuencia de comandos de apagado.
- En Windows, se usa la directiva de grupo local para iniciar la secuencia de comandos de apagado.
- El paquete de instalación configura el ajuste de la política de grupo local
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
para iniciar la secuencia de comandos al apagar el sistema.
- El paquete de instalación configura el ajuste de la política de grupo local
Invocación de la secuencia de comandos de apagado
Las secuencias de comandos de apagado se activan cuando la instancia se apaga después de que se produzca alguno de los siguientes eventos:
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 Spot VM o una instancia interrumpible como parte del proceso de interrupción.
Un script de cierre puede ser de cualquier tipo de archivo. Si hay una secuencia de comandos de apagado en la instancia, Compute Engine hace lo siguiente:
- Copia la secuencia de comandos en un archivo local de la instancia.
- Define los permisos del archivo para que la secuencia de comandos se pueda ejecutar.
- Ejecuta el archivo cuando se cierra la instancia.
Por ejemplo, puedes proporcionar una secuencia de comandos de Python en lugar de una secuencia de comandos de Bash. Ten en cuenta que Compute Engine ejecuta la secuencia de comandos textualmente, independientemente del tipo de secuencia de comandos.
Para ejecutar una secuencia de comandos que no sea bash, añade una línea shebang en la parte superior del archivo para indicar al sistema operativo qué intérprete debe usar. Por ejemplo, en un script de Python, puedes añadir una línea shebang como esta:
#!/usr/bin/python
Tiempo de ejecución de la secuencia de comandos de apagado
Las secuencias de comandos de apagado empiezan a ejecutarse cuando Compute Engine asigna el estado
STOPPING
a la instancia. Las secuencias de comandos deben completarse antes de que la instancia se detenga por completo, es decir, cuando su estado cambie aTERMINATED
. El tiempo que tarda la instancia en alcanzar el estadoTERMINATED
varía en función del tipo de instancia.Si tus secuencias de comandos tardan más en ejecutarse que el tiempo que tarda la instancia en detenerse, Compute Engine detendrá las secuencias de comandos de forma forzosa, lo que puede provocar la pérdida de datos o que las tareas no se completen. Para evitarlo, detén la instancia desde su SO invitado. Con este método, el estado de la instancia se mantiene en
STOPPING
hasta que se completen los scripts de apagado.Usar una secuencia de comandos de apagado local
Un script de cierre local es un script que se encuentra en tu ordenador local. Transfiere una secuencia de comandos de apagado local como archivo o proporcionando el contenido directamente a Compute Engine.
Las secuencias de comandos de cierre pueden realizar tantas acciones como necesites, pero si pasas el archivo de forma local, tu secuencia de comandos no puede superar el límite de longitud del valor de metadatos de 256 KB. Para usar una secuencia de comandos que supere el límite de longitud, guarda el archivo en Cloud Storage. Consulta Usar un script de cierre de Cloud Storage para obtener más información.
Proporcionar un archivo de secuencia de comandos de apagado
Solo puedes introducir un archivo de secuencia de comandos de apagado local a través de la
gcloud
herramienta de línea de comandos.gcloud
Para introducir un archivo de secuencia de comandos de cierre local, proporcione la marca
--metadata-from-file
seguida de un par clave-valor de metadatos,shutdown-script=PATH/TO/FILE
, dondePATH/TO/FILE
es una ruta relativa a la secuencia de comandos de cierre. Por ejemplo:gcloud compute instances create example-instance \ --metadata-from-file shutdown-script=examples/scripts/install.sh
Terraform
Para especificar una secuencia de comandos de apagado directamente, usa el recurso
google_compute_instance
con la ruta a la secuencia de comandos de apagado en los metadatos.Proporcionar directamente el contenido de la secuencia de comandos de apagado
También puedes introducir el contenido de tu secuencia de comandos de apagado directamente.
Consola
En la Google Cloud consola, especifica una secuencia de comandos de apagado directamente con la clave de metadatos
shutdown-script
:Ve a la página Crear una instancia.
Especifica los detalles de la VM.
Expande la sección Opciones avanzadas.
Despliega Gestión y haz lo siguiente:
- En la sección Metadatos, haz clic en Añadir elemento.
- En el campo Clave, introduce
shutdown-script
para la clave de metadatos. - En el campo Value (Valor), añade el contenido de la secuencia de comandos de apagado.
Continúa con el proceso de creación de la VM.
gcloud
Con la CLI de Google Cloud, usa la marca
--metadata
para proporcionar el contenido de tu secuencia de comandos de apagado, seguido del par de clavesshutdown-script=CONTENTS
, dondeCONTENTS
es el contenido de tu 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"
Terraform
Para especificar una secuencia de comandos de apagado directamente, usa el recurso
google_compute_instance
con la secuencia de comandos de apagado en los metadatos.REST
En la API, proporcione una secuencia de comandos de apagado como parte de la propiedad de metadatos en su solicitud al crear una instancia. Usa
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 una secuencia de comandos de apagado en instancias de Windows
Ejecuta secuencias de comandos de cierre en instancias de Windows mediante las siguientes claves de metadatos específicas de Windows. Elige cualquiera de las claves especializadas que se indican a continuación. Cada clave debe coincidir con el tipo de secuencia de comandos que quieras ejecutar.
Puedes especificar varias secuencias de comandos de apagado pasando diferentes claves a tu instancia, pero cada clave solo se puede especificar una vez por máquina virtual.
Las siguientes claves se pueden usar con una secuencia de comandos de cierre local siguiendo las mismas instrucciones que se indican más arriba.
cmd
secuencias de comandos de apagadobat
secuencias de comandos de apagadops1
secuencias de comandos de apagadowindows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Usar una secuencia de comandos de apagado de Cloud Storage
Puedes almacenar y usar una secuencia de comandos de apagado desde Cloud Storage. Sigue las instrucciones de la documentación sobre scripts de inicio, pero sustituye
startup-script-url
porshutdown-script-url
.En las instancias de Windows, sustituye
windows-startup-script-url
porwindows-shutdown-script-url
.Aplicar una secuencia de comandos de apagado a instancias en ejecución
Para añadir una secuencia de comandos de apagado a una instancia en ejecución, sigue las instrucciones de la sección Aplicar una secuencia de comandos de inicio a instancias en ejecución, pero sustituye las claves de metadatos por una de las siguientes:
shutdown-script
: proporciona el contenido de la secuencia de comandos de apagado directamente con esta clave. Con Google Cloud CLI, puedes proporcionar la ruta a un archivo de secuencia de comandos de apagado mediante la marca--metadata-from-file
y la clave de metadatosshutdown-script
.shutdown-script-url
: proporciona una URL de Cloud Storage al archivo de secuencia de comandos de cierre con esta clave.
Ver la salida de una secuencia de comandos de apagado
Linux
Para ver la salida de una secuencia de comandos de apagado de Linux, puedes hacer lo siguiente:
Conéctate a la instancia y ejecuta el siguiente comando:
sudo journalctl -u google-shutdown-scripts.service
Ver la salida a través del puerto serie 1 en la consola Google Cloud y comprobar si hay eventos de
google_metadata_script_runner
.IAP Desktop desde una estación de trabajo Windows. Para obtener más información, consulta el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Windows
Para ver la salida de una secuencia de comandos de apagado de Windows Server, siga uno de estos pasos y compruebe si hay eventos
GCEMetadataScripts
:Puerto serie 1 en la Google Cloud consola. Para obtener más información, consulta Ver salidas de puertos serie.
Registro de aplicación del Visor de eventos de Windows.
IAP Desktop desde una estación de trabajo Windows. Para obtener más información, consulta el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
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-09-12 (UTC).
-