Programación encendido y apagado automático máquinas virtuales EC2

Hoy voy a explicaros como podéis programar el encendido y apagado de vuestras máquinas virtuales en AWS EC2 para, porque no, ahorrar en costes mientras no las estemos utilizando 😉

Creación pila CloudFormation

Lo primero es logarnos en la consola de CloudFormation.

Ahora debemos elegir la región, arriba a la derecha (por ejemplo: París), donde vamos a desplegar la pila.

Desde el panel principal vamos a pulsar sobre el botón Crear pila.

En el apartado de especificar plantilla debemos seleccionar URL de Amazon S3 y especificar la siguiente URL: https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/instance-scheduler.template que corresponde con la imagen oficial de AWS Instance Scheduler.

Pulsamos en Siguiente para continuar.

En la siguiente pantalla tendremos que rellenar los siguientes campos:

  • Nombre de la pila: aquí especificaremos el nombre que queramos.
  • Instance Scheduler tag name: por defecto podemos dejar Schedule o modificarlo por el que queramos aunque es importante que recordéis este valor ya que lo utilizaremos más adelante.
  • Service(s) to schedule: seleccionamos EC2.
  • Scheduling enabled: establecemos el valor a Yes.
  • Default time zone: seleccionamos la zona horaria.

Estos son los campos más relevantes, el resto de campos podéis dejarlos por defecto y pulsar en siguiente para continuar con la configuración de la pila.

En la página de opciones dejamos todos los parámetros por defecto y pulsamos en siguiente.

Revisamos que la configuración es correcta y marcamos el siguiente check antes de pulsar en Enviar.

Ahora esperaremos unos minutos hasta que nuestra pila cambie al estado CREATE_COMPLETE.

Configuración programación

El siguiente paso es configurar la programación en el que se encenderán y apagarán nuestras máquinas virtuales, para ello, debemos irnos a la consola de AWS DynamoDB, elegir tablas, marcar el elemento que tiene el nombre de nuestra pila + ConfigTable y desplegar el menú de acciones para pulsar sobre Explorar elementos.

En esta nueva pantalla veréis que os aparecen varios elementos. Para que funcione la programación tenéis que crear primero un elemento del tipo period, os pongo aquí un ejemplo para que os sirva de referencia. En este ejemplo estamos indicando que nuestras máquinas virtuales se enciendan a las 8:00 y se apaguen a las 23:00 sólo de lunes a viernes.

Y luego tenéis que crear un elemento del tipo schedule que asociaremos al elemento del tipo period que hemos creado en el paso anterior.

Con esto ya tendríamos creada la programación y sólo nos quedaría asignarlas a aquellas máquinas en las que queramos aplicarlo.

Importante: apuntaros el valor que habéis puesto en el atributo name del elemento tipo schedule ya que lo vamos a utilizar a la hora de configurar nuestras máquinas virtuales.

Consideraciones a tener en cuenta:

La programación no funcionará en estos casos:

  • Si la instancia se ha iniciado manualmente fuera del periodo de programación definido, el programador de instancias no detendrá la ejecución de dicha máquina virtual.
  • Si detenemos una instancia manualmente durante el periodo de la programación, el programador de instancias no iniciará de forma automática la instancia.

Aplicar programación a una máquina virtual.

Para que funcione la programación lo primero es asegurarnos que nuestra máquina virtual tiene instalado el componente scheduler-cli. Sino sabéis si lo tenéis, podéis conectaros a vuestra máquina y ejecutar el siguiente comando:

scheduler-cli --version

En el caso de no tenerlo instalado debéis instalarlo y para ello lo mejor es que consultéis la documentación oficial, os dejo aquí el link, para que os instaléis la última versión disponible.

Una vez tenemos scheduler-cli, lo único que nos quedará es agregar una etiqueta a la máquina virtual a la que queremos aplicar la programación. Para ello nos iremos a nuestra consola AWS EC2 y agregaremos a la máquina virtual en cuestión una nueva etiqueta compuesta por lo siguiente:

  • Key: aquí tenemos que poner el nombre de la etiqueta que definimos en la creación de nuestra pila (por defecto Schedule).
  • Value: aquí tenemos que poner el valor del elemento tipo schedule que creasteis en DynamoDB con vuestra programación.

Por ejemplo, en la creación de la pila yo dejé la etiqueta que aparecía por defecto (Schedule) y en DynamoDB cree un elemento tipo Schedule al cual lo llamé Programacion-VM-8-23, por lo que la etiqueta a asignar sería la siguiente:

Y listo, a partir de este momento nuestra máquina virtual se iniciará y se apagará en función de la programación que hayamos definido.

Como siempre espero que la entrada os haya sido de utilidad.

Entradas relacionadas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.