En estos últimos tiempos, hay una clara tendencia, por parte de las empresas a migrar sus recursos al “cloud computing”.

La razón fundamental es que este nuevo modelo, ofrece a las empresas un acceso a servicios IT más escalables y versátiles. Esto permite a los clientes elegir niveles específicos de servicio de acuerdo a sus necesidades, en vez de tener que invertir en la compra de hardware para demandas de trabajo que, en muchos casos, pueden ser puntuales o cíclicas.

Sin embargo, debido a la forma de facturar que tienen los proveedores cloud, las empresas pueden incurrir en elevados costes, sino tienen cuidado en la forma en que utilizan estos servicios.

Una de las formas más habituales de disminuir el coste de los servicios cloud, es apagar los entornos cuando no se están utilizando. Generalmente, esto suele ocurrir con entornos de desarrollo y preproducción que suelen utilizarse únicamente en horario laboral.

Lo más razonable, es automatizar el encendido y apagado de estos entornos según la programación que haya definido la empresa.

Esta tarea, puede realizarse de varias formas. En este caso vamos a explicar como se podría automatizar el apagado y arranque secuencial de máquinas virtuales en Azure, utilizando Azure automation.

Una de las formas más sencillas de utilizar este servicio, sería una solución que ofrece Azure desde el market place.

Para ello:

  • Una vez logeados en el portal de Azure y estando en la suscripción elegida, creamos un grupo de recursos, en este caso rg_automation

  • Una vez dentro del grupo de recursos, pulsamos en añadir:
  • Buscamos la solución: Start/Stop VMs during off hours y pulsamos en crear.

Esta solución despliega directamente una cuenta de automatización y log analytics para visualizar la correcta ejecución de los Jobs de arranque y parado de máquinas.

  • A continuación, desplegamos la opción crear un nuevo OMS workspace, que es el servicio que nos permite utilizar log analytics. En este caso nos permite crear uno nuevo o vincular la solución a uno ya existente. En nuestro caso vamos a crear un nuevo workspace y rellenamos los campos solicitados que son:
    • Nombre del nuevo workspace (debe ser único)
    • Suscripción
    • Grupo de recursos donde queremos que se despliegue el workspace
    • Localización donde vamos a desplegar el workspace
    • Y el plan de precios

  • En segundo lugar, desplegamos la opción cuenta de automatización, donde aparecerán las cuentas de automatización que tengamos en la suscripción. En este caso, vamos a crear una nueva, por lo que pulsamos en crear cuenta de automatización y rellenamos los datos solicitados:
    • Nombre de la cuenta de automatización
    • Suscripción
    • Grupo de recursos donde queremos que se despliegue
    • Localización donde queremos que se despliegue
    • Pulsamos en crear una Run As account. De esta manera el proceso, crea un service principal con rol de colaborador de la suscripción, cuya función será la de proporcionar autenticación a los trabajos ejecutados desde la cuenta de automatización de manera que puedan administrar los recursos de Azure.

  • En tercer lugar, desplegamos la opción “Parámetros” en la que podemos seleccionar:
    • El grupo de recursos en el que se encuentran las máquinas que queremos automatizar su parada y arranque.
    • Lista de máquinas existente en ese grupo de recursos, que no queremos incluir en la automatización
    • Programación diaria de arranque y parada automática de las máquinas
    • Si queremos recibir un email de notificación al finalizar los Jobs de parada y arranque.
    • Listado de direcciones de correo donde se enviarán los emails de notificación.

En esta ocasión dejamos los parámetros tal y como están y pulsamos en crear, para poder configurar la automatización posteriormente.

Una vez desplegada la solución, nos vamos al grupo de recursos y pulsamos en la cuenta de automatización

Esta solución, nos provee de varias opciones:

  • Apagar las máquinas si exceden de un % de uso de CPU
  • Arrancar y apagar las máquinas según una programación
  • Arrancar y apagar las máquinas según una programación y en un orden determinado.

En nuestro caso vamos a aplicar esta última solución, que es útil cuando tenemos un entorno de dos capas, frontend con servidores web o de aplicaciones y backend con una o varias bases de datos. En estos casos es aconsejable apagar los servidores en el orden frontend-> backend y encenderlos en orden inverso.

Lo primero que debemos hacer es irnos a las variables y configurar el grupo de recursos donde se encuentran las máquinas y si hay alguna máquina que no queramos incluir en la automatización de apagado y encendido. En este caso:

A continuación, nos vamos a las programaciones y desactivamos las que están activadas por defecto:

Activamos la programación de arranque secuencial, en este caso queremos que las máquinas arranquen de lunes a viernes a las 8:00

Activamos la programación de parada secuencial, de manera que paren de lunes a viernes a las 15:00 horas

Una vez hecho esto, solo nos quedaría configurar el orden de parada y arranque de las máquinas. Para ello utilizamos las siguientes etiquetas:

  • “sequencestart”
  • “sequencestop”

El valor de las etiquetas debe estar entre (1,2,3) que corresponde con el orden en el que queremos que arranquen o paren las máquinas. Para ambas acciones, el orden es ascendente.

Así, para una máquina de frontend, las etiquetas serían:

De esta manera, arrancaría en segundo lugar y se apagaría antes que el backend.

En el caso de una máquina de backend, sería justo, al contrario:

Como conclusión, podríamos decir que mediante esta solución que ofrece Azure en el market place, podemos automatizar el apagado y encendido de máquinas fácilmente en menos de 15 minutos, permitiéndonos ahorrar costes de manera fácil y rápida.

About Francisco Javier Borjas Sánchez

Francisco studied a Bachelor’s Degree in Chemistry Science at Sevilla University. Certifications: MCSA: Windows Server 2012 - Certified 2017 / MCSA: Windows Server 2016 - Certified 2017 / MCSE: Cloud Platform and Infrastructure — Certified 2017. He started his professional career at Sevilla University as chemical engineering researcher. After 4 years, he worked for 11 years as Superior technician in occupational risk prevention. In 2017 he joined Enimbos, as Cloud Consultant.