Configurar una máquina virtual en Google Cloud es solo el primer paso. El verdadero reto aparece cuando la aplicación que corre dentro de ella se detiene y nadie la reinicia automáticamente. Aquí es donde los startup scripts se convierten en una pieza fundamental para mantener la disponibilidad de cualquier servicio desplegado en Compute Engine.
¿Por qué una aplicación deja de responder tras reiniciar la máquina virtual?
Cuando se levanta manualmente un proceso —por ejemplo, una aplicación web en Python dentro de un Virtual Env— ese proceso vive únicamente mientras la sesión SSH esté activa o hasta que algo lo detenga [0:47]. Si la máquina se reinicia o el proceso muere, la aplicación simplemente deja de responder.
Esto significa que al intentar acceder a la IP externa por el puerto 8080, la respuesta será un error. No es viable conectarse por SSH cada vez para repetir los comandos de activación del entorno virtual, resolución de dependencias y arranque de la aplicación [1:17].
¿Cómo configurar un startup script en Compute Engine?
La solución está en la sección de Custom Metadata de la máquina virtual. La metadata en Compute Engine funciona con una estructura de clave-valor: existen valores predeterminados que la máquina ya trae consigo, pero también es posible registrar valores personalizados [2:12].
Para crear un startup script, los pasos son los siguientes:
- Acceder a la máquina virtual desde el menú de Compute Engine.
- Seleccionar la opción de editar la instancia.
- En la sección de Custom Metadata, agregar una entrada con la clave
startup-script [2:42].
- En el valor, escribir los comandos que deben ejecutarse cada vez que la máquina arranque.
El nombre de la clave debe ser exactamente startup-script para que Compute Engine lo reconozca automáticamente. Sin embargo, si se necesitan otros valores personalizados, se pueden agregar con cualquier nombre [2:55].
¿Qué comandos incluir en el script?
No es necesario repetir la instalación de herramientas que ya existen en la máquina. Si el repositorio ya está clonado, si pip y git ya están instalados, el script solo necesita lo esencial [3:10]:
- Posicionarse en el directorio correcto de la aplicación.
- Activar el Virtual Env.
- Definir las variables de entorno necesarias.
- Levantar la aplicación web exponiendo el puerto correspondiente.
Es importante verificar que no queden espacios en blanco extra ni caracteres innecesarios en el script. Cada línea debe contener únicamente el comando que se desea ejecutar [3:52].
¿Cómo verificar que el startup script funciona correctamente?
Una vez guardada la configuración, el siguiente paso es detener la máquina virtual y volver a iniciarla [4:18]. Al reiniciar, Compute Engine detecta que existe un startup script en la metadata y lo ejecuta automáticamente después del proceso de booteo.
Al hacer clic en la IP externa y solicitar el puerto 8080, la aplicación responde sin necesidad de intervención manual [5:47]. Esto confirma que el script se ejecutó correctamente.
¿Qué pasa con la IP externa y la facturación al reiniciar?
Hay dos puntos críticos que se deben tener presentes al trabajar con instancias de Compute Engine.
Primero, la facturación. Las máquinas virtuales solo se cobran cuando están activas, es decir, cuando su estado es running y no stopped [4:42]. El costo se calcula con base en los recursos de cómputo asignados. En el ejemplo, se trata de un vCPU compartido y 0.6 GB de memoria, más un disco de 10 GB que incluye el sistema operativo [5:08]. También puede haber costos adicionales por egreso de red, aunque existe una capa gratuita que ayuda a mitigarlos.
Segundo, las IPs efímeras. De manera predeterminada, la IP externa de una instancia cambia cada vez que se detiene y se reinicia [5:30]. Esto implica que la dirección anterior deja de funcionar y hay que utilizar la nueva. Este comportamiento se puede resolver con IPs estáticas, un tema que se aborda en clases posteriores.
¿Qué otras opciones de automatización existen?
Además del startup script, Compute Engine permite configurar un shutdown script que ejecuta comandos específicos cuando la máquina se apaga [7:03]. Esto es útil para tareas de limpieza, respaldo de datos o cualquier operación que deba completarse antes de que la instancia se detenga.
Con estas herramientas de automatización, la infraestructura se vuelve más robusta y la aplicación mantiene su disponibilidad sin depender de intervención manual. ¿Has implementado startup scripts en tus proyectos de nube? Comparte tu experiencia y las configuraciones que mejor te han funcionado.