Como detener e iniciar aplicaciones web en Azure automaticamente

Uno de los aspectos más beneficiosos del servicio de la plataforma Microsoft Azure es su capacidad de automatización, podemos ser muy creativos con código PowerShell y tomar ventaja de pagar los servicios que utilizamos solo cuando los necesitamos, desactivando servicios de Azure cuando no se necesitan. Hay varios de ejemplos disponibles en la web sobre el uso de Automatización de Azure para detener e iniciar máquinas virtuales Azure basado en horarios definidos, pero cuando se trata de llevar a cabo la misma operación para los servicios de Aplicaciones Web de Azure, no hemos encontrado ningún ejemplo o guías lo suficientemente completas, así que aquí estamos haciendo un laboratorio para mostrar cómo hacerlo.

Este proceso consiste de tres pasos generales que se detallan a continuacion:
1) Crear una cuenta de Automatización de Azure.
2) Crear un Activo Credencial de Automatización .
3) Crear los Runbooks para detener e iniciar la aplicación.

¡Entremos en acción! lo primero que tenemos que hacer es tener una configuración de la cuenta de Automatización de Azure, configurado correctamente con un elemento credencial que será un usuario autorizado para gestionar nuestros servicios de suscripción de Azure.

PASO 1.  CREAR LA CUENTA DE AUTOMATIZACION AZURE:

  • Entramos en el portal de gestión de Azure, desplácese hacia abajo el panel de navegación izquierdo y haga clic en AUTOMATIZACIÓN, a continuación, haga clic en CREAR.

2015-08-11_12-40-37

  • En la pantalla ‘Agregar una cuenta de Automatización nueva’ especificamos un nombre y la región en donde almacenaremos esta cuenta. A continuación, haga clic en el botón de marca de verificación para completar la operación.

2015-08-11_9-27-40

PASO 2. CREAR UN ACTIVO DE TIPO CREDENCIAL DE AUTOMATIZACIÓN

?Crearemos un activo de tipo credencial de Automatización. El tipo de credencial debe ser “Credencial de Windows PowerShell”. Basamos el procedimiento en esta guía:
https://azure.microsoft.com/es-es/documentation/articles/automation-credentials/

?Práctica recomendada sobre este proceso: podemos utilizar cualquier (AAD) cuenta de usuario de Directorio Activo Azure existente en nuestra suscripción, siempre y cuando lo configuremos como un co-administrador; o podemos crear un usuario nuevo, se recomienda la creación de uno nuevo que tenga el propósito único de ejecutar scripts de automatización para el servicio específico, es decir, nuestro usuario para el activo credencial para este laboratorio es webappautomation@xxxxxx.onmicrosoft.com el cual es utilizado solo para aplicaciones web,  y, por ejemplo, podemos crear una cuenta de usuario AAD diferente para utilizar para los scripts de automatización que se aplicaran al servicio de máquinas virtuales, podría ser vmautomation@xxxxx.onmicrosoft.com. Esta es sólo una buena práctica de seguridad y gestión de identidad.

?Primero vamos a crear nuestro usuario AAD que se utilizará para el activo credencial. Hacemos clic en el panel izquierdo del portal de gestión de Azure en ACTIVE DIRECTORY, vamos a nuestro AAD, y luego a la pestaña USUARIOS, AGREGAR USUARIOS en la parte inferior de la pantalla:

FR-Automation-es-2015-08-11_13-02-36

FR-Automation-es-2015-08-11_13-05-47

  • Copiamos la contraseña temporal para usarla más adelante.

FR-Automation-es-2015-08-11_13-08-10

  • Hacemos que el usuario AAD reciéntemente creado, sea una cuenta de co-administrador de la suscripción. Vamos a CONFIGURACION en el portal de gestión de Azure, panel de la izquierda, ADMINISTRADORES y AGREGAR:

FR-Automation-es-2015-08-11_13-11-18

  • A continuación, desconectamos la sesión actual del portal de Administración de Azure y  entramos de nuevo usando la nueva cuenta que acabamos de crear con la contraseña temporal que guardamos anteriormente, se solicitara que cambie la contraseña en este punto.

 

  • En este momento estamos listos para crear nuestro Activo Credencial:

 

Para crear una nueva variable credencial con el portal Azure

1. Desde su cuenta de automatización, haga clic en ACTIVOS en la parte superior de la ventana.
2. En la parte inferior de la ventana, haga clic en Agregar configuración.
3. Haga clic en AGREGAR CREDENCIALES.
4. En el menú desplegable TIPO de CREDENCIAL, seleccione CREDENCIALES WINDOWS POWERSHELL.
5. Complete el asistente y haga clic en la casilla de verificación para guardar la credential nueva.?

Para crear una nueva credencial con el portal de vista previa Azure

1. Desde su cuenta de automatización, haga clic en la parte ASSETS para abrir la hoja de Activos.
2. Haga clic en la parte CREDENCIALS para abrir la pantalla CREDENCIALES
3. Haga clic en “Add a credential” en la parte superior de la hoja.
4. Complete el formulario y haga clic en CREATE para guardar la nueva credencial.

  • NOTA: En este ejemplo estamos usando un activo de credenciales en el script de PowerShell para autenticar a la suscripción y ejecutar las acciones de gestión (detener / iniciar), pero también es posible utilizar un activo de tipo certificado para autenticar, este método puede encontrarse en el enlace de abajo, pero el script PowerShell para este método será ligeramente diferente. Desde que se introdujo la autenticación por usuario AAD para los activos de credenciales de automatización, es más fácil de usar que un certificado. Por eso no vamos a revisar la autenticación de certificados, puede encontrarse en este enlace:
    https://azure.microsoft.com/es-es/documentation/articles/automation-certificates/

PASO 3. CREAR UN RUNBOOK PARA DETENER E INICIAR LA APLICACION WEB:

  • Nos vamos a la sección de automatización en el portal de administración de Azure, y hacemos clic en la Cuenta de automatización que creamos en el PASO 1, hacemos clic en la pestaña RUNBOOKS, y luego en IMPORT:

FR-Automation-es-2015-08-11_15-17-47

  • Navegamos al script de PowerShell que vamos a ejecutar para detener el sitio web (archivo .ps1 en el computador local, ejemplo script 1 más abajo), en la línea 3 del script de ejemplo, el elemento “MiCredencial” es el nombre del Activo credencial que creó en el paso 2. el elemento “MiSuscripcion” es el nombre de la suscripción Azure que contiene la aplicacion web, y “Webapplab” es el nombre de la aplicación web que quiere detener.

 

  • SCRIPT 1

 

workflow Stop-FR-Website
{
$cred = Get-AutomationPSCredential -Name “MiCredential”

Add-AzureAccount -Credential $cred

InlineScript {

Select-AzureSubscription -SubscriptionName “MiSuscripcion”

Stop-AzureWebsite -Name “webapplab”
   }
}

  • Si tenemos que editar el guión (script) después de subirlo, podemos editar desde la sección Runbook, abrimos el guión recientemente subido, y hacemos clic en AUTOR, esto nos permitirá editar el script y guardarlo, así como probarlo antes de crear un calendario para ejecutar. Lo probamos haciendo clic en el botón PRUEBA en la parte inferior de la pantalla.

FR-Automation-es-2015-08-11_15-21-11

FR-Automation-es-2015-08-11_15-28-01

  • Después de la prueba tendremos que publicar nuestro script con el fin de ser capaz de programar una tarea para ejecutarse como un Runbook.

FR-Automation-es-2015-08-11_15-30-52

  • Casi hemos terminado, ahora es el momento de crear nuestros trabajos programados para ejecutar el runbook. Nnos vamos al runbook que creamos para detener el sitio web, hacemos clic en él y a continuación, hacemos clic en PROGRAMAR.

FR-Automation-es-2015-08-11_15-33-16

  • Seleccionamos “Vincular a una programación nueva” , creamos un nombre para la programación , y hacemos clic en la flecha de pantalla siguiente.

FR-Automation-es-2015-08-11_15-38-32

  • Configuramos nuestra planificación para ejecutar una sola vez, por hora o por día. Seleccione la fecha de inicio y la hora, el tiempo utiliza un formato de 24 horas y no se ajusta al horario de verano. Establezca una hora de inicio que es al menos 5 minutos después de la hora que creamos para este horario, entonces podemos utilizar la opción “Repetir cada número de días” para ejecutar semanal, mensualmente, etc.

FR-Automation-es-2015-08-11_15-40-28

  • Siga los mismos pasos anteriores para crear un Runbook para iniciar la página web, publicar y programarlo. Aquí está la muestra utilizada en esta práctica:

SCRIPT 2

workflow Start-FR-Website
{
$cred = Get-AutomationPSCredential -Name “MyCredential”

Add-AzureAccount -Credential $cred

InlineScript {

Select-AzureSubscription -SubscriptionName “MyAzureSubName”

Start-AzureWebsite -Name “webapplab”
   }
}

Relajarse y observar la aplicación web detenerse e iniciarse automáticamente según la necesidad.  Comentarios y sugerencias son bienvenidos para corregir y/o mantener este contenido vigente. Gracias.

One Response

  1. Gonzalo Hevia June 22, 2016 Reply

Leave a Reply