Ejecuta secuencias de comandos de cierre

Crea y ejecuta secuencias de comandos de apagado que ejecuten comandos justo antes de que una instancia finalice o se reinicie. Esto es útil si confías en las secuencia de comandos automatizadas para iniciar y cerrar instancias, lo que permite que las instancias se limpien o realicen tareas, como exportar registros o sincronizarse con otros sistemas.

Las secuencia de comandos de apagado son útiles, en particular, para instancias en un grupo de instancias administrado con un escalador automático. Si el escalador automático cierra una instancia en el grupo, la secuencia de comandos de apagado se ejecuta antes de que la instancia se detenga y la secuencia de comandos de apagado realiza cualquier acción que definas. La secuencia de comandos se ejecuta durante el período de apagado limitado antes de que la instancia se detenga. 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.

Antes de comenzar

Permisos necesarios para esta tarea

Debes contar con los permisos siguientes para realizar esta tarea:

Especificaciones

Limitaciones

Hay algunas limitaciones que se deben tener en cuenta cuando se usan secuencias de comandos de apagado:

  • 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.
  • Para instancias de Linux, puedes usar secuencias de comandos de apagado solo con la versión de imagen v20141007 o posterior. Para instancias de Windows Server, puedes usar secuencias de comandos de apagado solo con la imagen v20150310 o posterior.

Invocación de la secuencia de comandos de apagado

Las secuencias de comandos de apagado se activan mediante ciertos eventos de Interfaz avanzada y configuración avanzada (ACPI), como los reinicios o terminaciones. Hay muchas formas de reiniciar o finalizar una instancia, pero solo algunas activan la ejecución de la secuencia de comandos de apagado. Se ejecuta una secuencia de comandos de apagado como parte de las acciones siguientes:

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 una secuencia de comandos de apagado presente, Compute Engine realizará lo siguiente:

  1. Copiará la secuencia de comandos en un archivo local en la instancia.
  2. Establecerá permisos en el archivo para hacerlo ejecutable.
  3. Ejecutará el archivo cuando la instancia finalice.

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 tarda más de este período en completarse, la instancia finaliza de forma automática y se borran todas las tareas en ejecución. 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 de cada tipo de instancia, consulta Período de apagado.

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 Google Cloud Storage. Consulta Usa una secuencia 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.

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 que PATH/TO/FILE es una ruta relacionada con la secuencia de comandos de apagado. Como en el siguiente ejemplo:

gcloud compute instances create example-instance \
    --metadata-from-file shutdown-script=examples/scripts/install.sh

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 GCP Console, especifica una secuencia de comandos de apagado directamente con la clave de metadatos shutdown-script:

  1. En GCP Console, ve a la página VM Instances.

    Ir a la página Instancias de VM

  2. Haz clic en Crear instancia.
  3. En la página Crear una instancia nueva, llena las propiedades que quieras para tu instancia. Para ver las opciones de configuración avanzadas, amplía la sección Administración, seguridad, discos, redes, un solo inquilino.
  4. En la sección Metadatos, completa shutdown-script como la clave de metadatos.
  5. En el cuadro Valor, proporciona el contenido de la secuencia de comandos de apagado.
  6. Haz clic en Crear para crear la instancia.

gcloud

Con la herramienta de línea de comandos de gcloud, usa la marca --metadata para proporcionar el contenido de la secuencia de comandos de apagado, seguida del par de claves shutdown-script=CONTENTS, en el que CONTENTS 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"

API

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://www.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 claves siguientes se pueden usar con una secuencia de comandos de apagado local si sigues las mismas instrucciones anteriores.

secuencia de comandos de apagado de cmd secuencia de comandos de apagado de bat secuencia 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 Google Cloud Storage

Puedes almacenar y usar una secuencia de comandos de apagado desde Google Cloud Storage. Sigue las instrucciones en la documentación de las secuencias de comandos de inicio, pero reemplaza startup-script-url por shutdown-script-url.

Para las instancias de Windows, reemplaza windows-startup-script-url por windows-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:

  • shutdown-script: proporciona el contenido de la secuencia de comandos de apagado directamente con esta clave. Con la herramienta de línea de comandos de gcloud, puedes proporcionar la ruta a un archivo de secuencia de comandos de apagado mediante la marca --metadata-from-file y la clave de metadatos shutdown-script.
  • shutdown-script-url: proporciona una URL de Google Cloud Storage al archivo de secuencia de comandos de apagado con esta clave.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación de Compute Engine