Automatización: Programar encendido y apagado de máquinas virtuales en Azure

martes, 15 de septiembre de 2015


En este artículo veremos como utilizar la potente herramienta de automatización que incorpora Microsoft Azure, la cual utilizaremos para apagar y encender todas las máquinas virtuales en una suscripción de Azure, el apagar todas las máquinas sin ir una por una y hacerlo a determinadas horas, resulta especialmente útil en escenarios donde deseamos ahorrar créditos y no queremos que nuestras máquinas queden encendidas durante largas jornadas de tiempo consumiendo de nuestra tarjeta y máxime si las máquinas no están haciendo nada, así que veamos como automatizar la tediosa tarea de apagar las máquinas, y de paso también veremos como automatizar el encendido.

Lo primero que debemos hacer es crear una cuenta de organización del tipo @algo.onmicrosoft.com, esta cuenta debe tener permisos de co-administrador


En este caso cree una cuenta llamada auto cuyo nombre de usuario es auto@cesarherrada.onmicrosoft.com, La vamos a necesitar más adelante.

Ahora seleccionamos la característica Automatización del panel de la izquierda en el portal.


Nos indica  que no existe ninguna cuenta de automatización, entonces hacemos clic en Crear una cuenta de automatización

Indicamos el nombre de la cuenta y la región donde deseamos crearla.


Una vez creada, ingresamos a la misma y veremos varias opciones en el menú de la parte superior, seleccionamos Activos


En las opciones de la parte inferior del portal hacemos clic en Agregar Configuración


En Agregar Configuración seleccionamos la opción Agregar Credenciales 


Esto nos permitirá crear y almacenar las credenciales que utilizaremos para ejecutar los flujos de PowerShell que se encargan de encender y apagar las máquinas (recordemos que la cuenta a utilizar fue lo primero que creamos).

En Tipo de Credenciales seleccionamos Credenciales de Windows PowerShell del cuadro desplegable

Y en el cuadro Nombre ponemos el nombre que llevará este activo y a el cual debemos referirnos más adelante, en este caso lo he llamado Azurecloud


En el siguiente paso es donde debemos especificar la cuenta que hemos creado al inicio y su respectiva contraseña.


Al finalizar, veremos que el nuevo activo ha sido creado satisfactoriamente.


Ahora, volvemos a la página principal de automatización, y veremos que como parte de la introducción a esta característica tenemos la posibilidad de importar runbooks desde una galería, estos runbooks son como los scripts o flujos de trabajo de PowerShell que hacen posible la automatización.



Presten especial atención a la lista de la izquierda, existe una gran variedad de categorías para explorar, en nuestro caso vamos a seleccionar la categoría VM Lifecycle Management y de la lista de runbooks trabajaremos con los dos que se encuentran encerrados con rojo, se trata de los runbooks para programar el encendido y apagado de máquinas virtuales, voy a empezar con el de apagado, el que tiene la palabra "stopping"



Al seleccionarlo, nos mostrará la definición del runbook, es decir, el código de PowerShell básicamente.


Ahora nos solicita un nombre, dejaré el nombre por defecto Stop-AllAzureVM, en Cuenta de Automatización seleccionar la recién creada, luego la suscripción y región deseadas.


Finalizamos, y veremos en la barra de notificaciones el siguiente mensaje:



En el mensaje podemos hacer clic en el botón Editar Runbook para configurarlo


Vamos a la opción Autor donde encontraremos otras dos opciones Publicado y Borrador, todos los runbooks permanecen en estado de borrador hasta que no los revisemos, ajustemos y una vez ajustados e incluso probados podemos publicarlos para que sean puestos en producción, así que por ahora haremos clic en Borrador


En el borrador debemos cambiar dos partes y ajustarlas a nuestros datos, estas son Name y SubscriptionName, específicamente las líneas 32 y 39 donde debemos poner el nombre del activo que creamos con las credenciales y el nombre de la suscripción.



Ya editado, podemos probarlo antes de publicarlo, para ello hacemos clic en prueba en laparte inferior.


Se debe producir la siguiente salida indicando que la operación fue exitosa.


Nota importante: Mientras realizaba las pruebas del runbook estaba obteniendo el siguiente mensaje de error:

Error: Select-AzureSubscription : The subscription name VISUAL STUDIO PREMIUM CON MSDN doesn't exist.



Claramente, la suscripción existe, escribí el nombre tal como lo noté en la parte superior de portal donde aparecen los créditos disponibles.


Si observan en la edición del runbook esta es la suscripción que indique, así que decidí conectarme desde PowerShell y verificar la información, pensé que tal vez era por no ser la suscripción actual.



Y como se puede observar, la suscripción es la adecuada y además es la suscripción por defecto, lo único que noté diferente es la forma en que escribí, en el runbook tengo todo el texto en mayúsculas, tal como aparece en el estado del crédito, sin embargo podemos ver que el resultado del cmdlet Get-AzureSubscription no lo muestra todo en mayúscula, así que decidí hacer la prueba y cambiar esto en el código.

También pude haber observado este nombre sin necesidad de PowerShell, simplemente es el mismo que aparece junto a las VMs


A continuación el código modificado.



Después de este cambio, la prueba funcionó correctamente.

Bien, de este modo ha quedado listo el primer runbook para apagar las máquinas, ahora vamos a configurar el de inicio, omitiré los pasos ya que es exactamente igual al de apagado, solo mostraré la pantalla final.


Al finalizar, veremos los dos runbooks creados.


Antes de poder realizar la programación, debemos publicar los runbooks, encontramos la opción en la parte inferior.


Vemos que ahora tenemos el código en la opción Publicado


Una vez publicado, en cada uno de los runbooks vamos a la opción Programar y hacemos clic en Vincular a una programación nueva


Debemos hacerlo por cada runbook.

Vamos con el de encendido, ponemos el nombre que llevará la programación.


Y configuramos la programación, en este caso la dejé diaria a las 7:00 am y con repetición todos los días.


Este será el resultado


Ahora hacemos lo mismo con el runbook de apagado


También diariamente pero a las 18:00


El resultado



En el tab Runbooks podemos ver los dos recién creados y columnas donde se indica el estado de los trabajos, la última vez que se ejecutó  y la cantidad de trabajos ejecutados.


A continuación pongo dos días después de haber creado las tareas de automatización, se observa la cantidad de trabajos que se ha realizado, si fue exitoso y la fecha y hora en que se ejecutó, la cual corresponde claramente a la programación que definimos previamente.




De esta forma hemos terminado de automatizar el encendido y apagado de todas las máquinas virtuales de una suscripción de Azure.

Espero esta información sea de utilidad. Hasta la próxima!

No hay comentarios:

 

Temas por fecha

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas