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 es útil si usas las secuencias de comandos automatizadas para iniciar y apagar instancias, lo que permite que las instancias se limpien o realicen tareas, como exportar registros o sincronizarse con otros sistemas.
Las secuencias de comandos de apagado son útiles, en particular, para las VM de un grupo de instancias administrado 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 se detenga la VM y realiza cualquier acción que definas. La secuencia de comandos se ejecuta durante el período de apagado limitado antes de que se detenga la VM. Por ejemplo, la secuencia de comandos de apagado puede copiar datos procesados en Cloud Storage o hacer una copia de seguridad de cualquier registro.
Las secuencias de comandos de apagado funcionan de manera muy similar a las secuencias de comandos de inicio. Gran parte de la documentación para las secuencia de comandos de inicio también se aplica a las de apagado.
Para las tareas de apagado y reinicio, las VM siempre ejecutan secuencias de comandos de apagado de la siguiente manera:
- Para las VM de Linux, utiliza el usuario
root
. - Para las VM de Windows, utiliza la cuenta
System
.
Antes de comenzar
- Obtén información sobre las secuencia de comandos de inicio.
- Comprende qué es el servidor de metadatos.
-
Si aún no lo hiciste, configura la autenticación.
La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud.
Para ejecutar un código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
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.
- Todos los permisos necesarios para crear una instancia
compute.instances.setMetadata
en la instancia- Las secuencias de comandos de apagado tienen un tiempo limitado para terminar de ejecutarse antes de que se detenga la instancia:
- Instancias bajo demanda: 90 segundos después de detener o borrar una instancia
- Instancias interrumpibles: 30 segundos después de que comience la interrupción de la instancia
- Compute Engine ejecuta secuencias de comandos de apagado solo en función del mejor esfuerzo. Es poco frecuente que Compute Engine no pueda garantizar que se complete la secuencia de comandos de apagado.
- En Windows, se usa la política de grupo local para iniciar la secuencia de comandos de apagado.
- El paquete de instalación configura la configuración
Computer Configuration/Windows Setting/Scripts (Startup/Shutdown)
de la política de grupo local para iniciar la secuencia de comandos cuando se cierra el sistema.
- El paquete de instalación configura la configuración
- Cuando una instancia se apaga debido a una solicitud
instances.delete
o una solicitudinstances.stop
a la API - Cuando Compute Engine detiene una instancia interrumpible como parte del proceso de interrupción
- Cuando una instancia se apaga mediante una solicitud al sistema operativo invitado, como
sudo shutdown
osudo reboot
- Cuando se cierra una instancia de forma manual a través de la consola de Google Cloud o la herramienta
gcloud compute
- Copiará la secuencia de comandos en un archivo local en la instancia.
- Establecerá permisos en el archivo para hacerlo ejecutable.
- Ejecutará el archivo cuando la instancia se detenga.
Ir a la página Crear una instancia
Especifica los detalles de la VM.
Expanda la sección Opciones avanzadas.
Expande Administración y haz lo siguiente:
- En la sección Metadatos, haz clic en Agregar elemento.
- En el campo Clave, ingresa
shutdown-script
para la clave de metadatos. - En el campo Valor, agrega el contenido de la secuencia de comandos de apagado.
Continúa con el proceso de creación de VM.
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, con 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 apagado con esta clave.Conéctate a la instancia y ejecuta el siguiente comando.
sudo journalctl -u google-shutdown-scripts.service
Visualiza el resultado a través del puerto en serie 1 en la consola de Google Cloud y verifica los eventos
google_metadata_script_runner
.IAP Desktop desde una estación de trabajo de Windows. Para obtener más información, consulta el repositorio GoogleCloudPlatform/iap-desktop en GitHub.
Puerto en serie 1 en la consola de Google Cloud. Para obtener más información, consulta Visualiza la salida de puertos en serie
Registro de aplicaciones del visualizador de eventos de Windows
IAP Desktop desde una estación de trabajo de Windows. Para obtener más información, consulta 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
Si deseas 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, debes tener los siguientes permisos:
Especificaciones
Limitaciones
Hay algunas limitaciones que se deben tener en cuenta cuando se usan secuencias de comandos de apagado:
Invocación de la secuencia de comandos de apagado
Las secuencias de comandos de apagado se activan mediante ciertos eventos de Interfaz avanzada de configuración y energía (ACPI), como los reinicios o las detenciones. Hay muchas formas de reiniciar o detener una instancia, pero solo algunas activan la ejecución de la secuencia de comandos de apagado. Una secuencia de comandos de apagado se ejecuta como parte de las siguientes acciones:
La secuencia de comandos de apagado no se ejecutará si la instancia se restablece con
instances().reset
.Una secuencia de comandos de apagado puede ser de cualquier tipo de archivo. Si hay presente una secuencia de comandos de apagado, Compute Engine realizará lo siguiente:
Podrías, por ejemplo, proporcionar una secuencia de comandos de Python, en lugar de una de Bash. Ten en cuenta que Compute Engine ejecuta la secuencia de comandos de manera literal, sin importar el tipo.
Para ejecutar una secuencia de comandos que no sea Bash, agrega una línea shebang en la parte superior del archivo para que el sistema operativo sepa qué intérprete usar. Por ejemplo, para una secuencia de comandos de Python, puedes agregar una línea shebang como la que se muestra a continuación:
#!/usr/bin/python
Tiempo de ejecución de la secuencia de comandos de apagado
Antes de que una instancia se apague o reinicie, la secuencia de comandos de apagado tiene un período limitado para ejecutarse. Durante este período, Compute Engine intenta ejecutar la secuencia de comandos de apagado. Si la secuencia de comandos lleva más tiempo en completarse que este período, la instancia se detiene de forma automática y todas las tareas en ejecución finalizan. Si apagas o reinicias una instancia mediante una solicitud al sistema operativo invitado con el comando
sudo shutdown
, el límite no aplica.La duración del período de apagado varía según el tipo de instancia. Las instancias interrumpibles tienen un período de apagado más corto que las instancias normales. Para obtener más información sobre los límites de tiempo de apagado en cada tipo de instancia, consulta Período de baja.
En general, la secuencia de comandos de apagado debe terminar de ejecutarse dentro del período de apagado para que el sistema operativo tenga tiempo de completar el proceso de apagado y vaciar los búferes en el disco.
Usa una secuencia de comandos de apagado local
Una secuencia de comandos de apagado local es una secuencia de comandos que reside en tu computadora local. Debes pasar una secuencia de comandos de apagado local como un archivo o mediante la entrega del contenido directo a Compute Engine.
Las secuencias de comandos de apagado pueden realizar tantas acciones como necesites, pero si pasas el archivo de manera local, la secuencia de comandos 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, almacena el archivo en Cloud Storage. Consulta Ejecuta secuencias de comandos de apagado de Google Cloud Storage para obtener más información.
Proporciona 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 de
gcloud
.gcloud
Para pasar un archivo de secuencia de comandos de apagado local, proporciona la marca
--metadata-from-file
, seguida de un par de claves de metadatos,shutdown-script=PATH/TO/FILE
, en el quePATH/TO/FILE
es una ruta relativa a la secuencia de comandos de apagado. 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 de forma directa, usa el recurso
google_compute_instance
con la ruta de acceso a la secuencia de comandos de apagado en los metadatos.Proporciona el contenido de la secuencia de comandos de apagado de manera directa
Una alternativa es pasar el contenido de la secuencia de comandos de apagado de manera directa.
Console
En la consola de Google Cloud, especifica una secuencia de comandos de apagado directamente con la clave de metadatos
shutdown-script
:gcloud
Con Google Cloud CLI, usa la marca
--metadata
para proporcionar el contenido de la secuencia de comandos de apagado, seguida del par de clavesshutdown-script=CONTENTS
, en el queCONTENTS
es el contenido de la 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 de forma directa, usa el recurso
google_compute_instance
con la secuencia de comandos de apagado en los metadatos.REST
En la API, proporciona una secuencia de comandos de apagado como parte de la propiedad de metadatos en la solicitud cuando crees una instancia. Usa
shutdown-script
como la 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" } ] }... }
Proporciona una secuencia de comandos de apagado en instancias de Windows
Ejecuta secuencias de comandos de apagado en instancias de Windows con las siguientes claves de metadatos específicas de Windows. Elige entre cualquiera de las claves especializadas que se enumeran a continuación. Cada clave debe coincidir con el tipo de secuencia de comandos que deseas ejecutar.
Puedes especificar múltiples secuencias de comandos de apagado si pasas diferentes claves a la 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 apagado local si sigues las mismas instrucciones anteriores.
Secuencias de comandos de apagado de cmd
Secuencias de comandos de apagado de bat
Secuencias de comandos de apagado de ps1
windows-shutdown-script-cmd
windows-shutdown-script-bat
windows-shutdown-script-ps1
Usa 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 en la documentación de secuencias de comandos de inicio, pero reemplaza
startup-script-url
porshutdown-script-url
.Para las instancias de Windows, reemplaza
windows-startup-script-url
porwindows-shutdown-script-url
.Aplica una secuencia de comandos de apagado en las instancias en ejecución
Para agregar una secuencia de comandos de apagado a una instancia en ejecución, sigue las instrucciones en la documentación de Aplica una secuencia de comandos de inicio a instancias en ejecución, pero reemplaza las claves de metadatos con una de las claves siguientes:
Visualiza el resultado de una secuencia de comandos de apagado
Linux
Para ver el resultado de una secuencia de comandos de apagado de Linux, puedes elegir una de las siguientes opciones:
Windows
Puedes ver el resultado de una secuencia de comandos de apagado de Windows Server mediante alguna de las siguientes opciones y buscando eventos
GCEMetadataScripts
:Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-20 (UTC)
-