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 es posible eliminar directorio en Azure Active Directory - Office 365 Management APIs

martes, 8 de septiembre de 2015


En este artículo explicaré cómo eliminar un directorio en Azure Active Directory en especial porque la eliminación no es del todo tan transparente.

Todo empezó cuando intenté eliminar un directorio y me encontré con el siguiente mensaje:


El motivo: El directorio tiene una o varias aplicaciones que añadió un usuario o administrador

Al revisar las aplicaciones en el directorio me encuentro con la siguiente: Office 365 Management APIs



Esta aplicación estaba impidiendo la eliminación del directorio, y desde el portal no existe opción alguna para eliminarla, consultando en al web encontré que la forma de hacerlo era mediante una cuenta de organización diferente, así que lo primero es crear la cuenta, en Usuarios y haciendo clic en la opción Agregar Usuario


Seleccionamos un usuario de tipo "Nuevo usuario de la organización" le ponemos un nombre y seleccionamos el dominio *.onmicrosoft.com



Completamos los datos del perfil del usuario.


Por último creamos la contraseña temporal, con la cual ingresaremos al portal de Azure, hacemos clic en el botón Crear



Copiamos la contraseña temporal generada.




Ingresamos al portal de Azure y ponemos la cuenta que hemos creado con la contraseña temporal que acabamos de crear.



Una vez ingresemos la contraseña temporal se solicitará el cambio de clave (que es realmente el propósito de estos pasos).


Después de hacer clic en el botón Actualizar contraseña e iniciar sesión es probable que recibas un mensaje de error indicando que no cuentas con una suscripción de Azure, no hay que preocuparse, es un comportamiento esperado, el objetivo en nuestro caso es cambiar la contraseña.

Para el paso siguiente vamos a necesitar de PowerShell, para lo cual es necesario tener instalado Microsoft Online Services Sign-in Assistant for IT Professionals así como también el módulo de PowerShell para Azure Active Directory

Abrimos la consola con el módulo de PowerShell para Active Directory y cargamos las credenciales (del usuario que recién creamos) con el siguiente comando:

$msolcred = get-credential  





Cuando aparezca el cuadro de diálogo ponemos nombre de usuario y contraseña, luego hacemos clic en Aceptar 

Ahora nos conectamos al servicio usando las credenciales que hemos almacenado en la variable $msolcred

connect-msolservice -credential $msolcred




Con el siguiente comando podemos listar las aplicaciones que contiene el directorio actualmente.

Get-MsolServicePrincipal | Select DisplayName



Ahora vamos a borrar todas las aplicaciones para luego si poder borrar el directorio de Azure Active Directory con el siguiente comando:

Get-MsolServicePrincipal | Remove-MsolServicePrincipal 


Es normal que obtengamos algunos mensajes de error como los que se muestran en la imagen anterior, pues no todas las aplicaciones pueden ser eliminadas del directorio, Azure las necesita, así que si volvemos a ejecutar el comando Get-MsolServicePrincipal | Select DisplayName obtendremos el siguiente resultado:


Los anteriores son SPs que Azure no permite eliminar, pero tampoco nos impiden eliminar el directorio, para mi caso lo importante fue la eliminación del SP Microsoft.Office365.Configure

Después de realizar este procedimiento, volvemos al portal de Azure e intentamos eliminar nuevamente el directorio, oh sorpresa! otra vez lo impide, pero esta vez la razón para evidente, el directorio aún contiene usuarios, pues claro el que creamos para poder eliminar el directorio.


Así que no queda más remedio que eliminar el usuario que creamos en el directorio.


Luego,, volvemos a intentar eliminar el directorio, y vemos que ahora si lo permite, muestra una casilla de verificación para eliminar el directorio.


Al final veremos el mensaje de confirmación.


Bien, y esto es todo.

Espero la información sea de utilidad.

 

Lo más visto

Comunidad

Comunidad
Comunidad Técnica

Visitas