Despliegues anidados de plantillas ARM automatizados con PowerShell y Azure Blob Storage

A la hora de desplegar una plantilla de Azure Resource Manager, el proceso es bastante sencillo tanto desde la línea de comandos multiplataforma como desde PowerShell. Se resume en un comando al que se le pasa el grupo de recursos y la plantilla que se quiere desplegar. Sin embargo, cuando en lugar de una única plantilla queremos hacer un despliegue de una solución más compleja compuesta por varias plantillas anidadas, esto requiere incluir algún elemento intermedio para lograrlo.

Desde una plantilla de ARM es posible invocar el despliegue de otras plantillas ARM con una única condición: deben de estar accesibles de forma pública al orquestador que las interpreta en Azure para que pueda descargársela e implementar los recursos que hemos definido. El uso de plantillas anidadas puede darse por diversos motivos, generalmente los principales suelen ser: evitar plantillas de varios miles de líneas y facilitar el trabajo de la persona o el equipo de personas que escriben dicha plantilla.

Una solución bastante común al problema es hacer uso de un repositorio público de código como lo que ofrece GitHub. Este modo es el que emplea el propio repositorio público de plantillas que Azure pone a vuestra disposición para implementar directamente o para tomar como ejemplo a la hora de crear nuestras propias plantillas. Sin embargo, en muchas ocasiones no nos interesa que nuestras plantillas estén accesibles por terceros dentro de Github. Es ahí donde entra en juego la solución que empleo yo. Probablemente no sea la mejor solución o la más completa pero es la que me facilita el trabajo con las plantillas anidadas en varios despliegues preparados para diferentes clientes. El sistema funciona de la siguiente manera.
Continue reading Despliegues anidados de plantillas ARM automatizados con PowerShell y Azure Blob Storage

Ejecutando múltiples veces CustomScriptExtension en una máquina Windows en Azure

Es posible que en alguna ocasión hayáis necesitado ejecutar más de un script de configuración en una máquina virtual con Windows Server 2012 R2 en Azure en diferentes momentos de su aprovisionamiento. Si habéis intentado realizarlo desplegando la extensión Custom Script lo más probable es que recordéis un mensaje como el siguiente:

me@Azure:~$ az group deployment create --name deploy --resource-group jangelfdez-blog --template-file /home/me/clouddrive/main.simplevm.json --verbose
[...]
Failed: secondInstallation (Microsoft.Compute/virtualMachines/extensions)
Failed: deploy (Microsoft.Resources/deployments)
Succeeded: firstInstallation (Microsoft.Compute/virtualMachines/extensions)
Deployment failed. {
  "error": {
    "code": "BadRequest",
    "message": "Multiple VMExtensions per handler not supported for OS type 'Windows'. VMExtension 'secondInstallation' with handler 'Microsoft.Compute.CustomScriptExtension' already added or specified in input."
  }
}

Continue reading Ejecutando múltiples veces CustomScriptExtension en una máquina Windows en Azure

Winter IoT coming! Auroras Boreales en tu casa directamente desde el polo

Un año más se ha celebrado en Madrid una nueva edición del Global Azure Bootcamp. En esta ocasión hemos tenido el lujo de contar con el proyecto del Instituto de Astrofísica de Canarias para analizar la vida secreta de las galaxias. Si tenéis curiosidad sobre el proyecto tenéis disponible la sesión que impartieron el equipo del IAC e Intelequia al respecto de cómo se había montado el laboratorio.

Como en otras ocasiones, Iria y yo nos animamos a presentar una sesión. En esta ocasión, a diferencia de las anteriores, no fue sobre un producto o tecnología en concreto sino que nos enfocamos en cómo implementar una idea con los diferentes servicios que Azure pone a nuestra disposición. Si tienes curiosidad, aquí os dejo la descripción de la sesión y la grabación gracias al equipo de DX.

“Las Auroras Boreales son un fenómeno difícil de predecir, empiezan y acaban de forma rápida con pocos minutos de margen para disfrutar de ellas. Por lo tanto, un termo de café caliente y una buena ropa de abrigo son las mejores herramientas para superar las gélidas noches nórdicas en busca y captura de ellas. ¿No sería mejor podes disfrutar de ellas desde el calorcito de tu casa?
En esta sesión veremos cómo a través de Azure podremos construir un sistema que nos permita disfrutar de las Auroras Boreales en nuestra habitación con un poco de serverless computing e IoT.
¿Te vienes a verlas con nosotros?”

Azure Notifier, un sistema de notificación basado en Logic Apps y Azure Functions

Hasta hace unas semanas, un compañero interno de Microsoft había construido una aplicación que permitía recibir por correo electrónico las novedades relacionadas con Azure de las principales fuentes de información: el blog de Azure, las actualizaciones de servicio y el contenido de Channel 9. La aplicación era un proyecto personal y tras irse de la compañía el servicio desapareció.

Debido al ritmo de evolución de los servicios de Azure, una utilidad como esta era muy práctica para tener una visión diaria de qué había nuevo, qué había cambiado y qué nuevo contenido multimedia estaba disponible para ser consumido. Es por ello que estos días de vacaciones me propuse ver si se podía montar algo rápido con los servicios PaaS de Azure y así es como me he construido mi propio servicio notificador.

Continue reading Azure Notifier, un sistema de notificación basado en Logic Apps y Azure Functions

Sincronizando cambios de red en Web Apps con conexión a una VNET

Una de las funcionalidades de la parte de Web Apps dentro del App Service es la capacidad de conectarse a una red privada para que nuestras aplicaciones puedan acceder a información que no esté pública en la red. El proceso de creación está perfectamente detallado paso por paso en la documentación.

Durante el proceso inicial de establecimiento de la conexión se realizan una serie de pasos como la generación de los certificados de la conexión punto a sitio o se propaga la información del enrutado, de los DNS y de otra información necesaria para que la conectividad sea exitosa. Sin embargo, es posible que por algún motivo a lo largo del tiempo de vida de la aplicación, esta información de red se vea modificada y sea necesario actualizarla.

Para ello, no es necesario recrear la conexión entre la Web App y la red, simplemente será necesario acceder a la pestaña de Virtual Network y en la parte superior veremos el botón de Sync Network . Con ello, se cargará la nueva información y aplicando los cambios que se hayan realizado a nivel de la red virtual a la que está enlazada. ¡Ojo! Provocará un corte breve en la conectividad por lo que durante unos instantes la aplicación podría dejar de funcionar correctamente.

Sincronizar cambios de red en Web Apps
Sincronizar cambios de red en Web Apps

En mi caso, el cambio fue relacionado con los DNS. Una vez iniciada la sincronización, al cabo de unos instantes estaban ya los nuevos DNS propagados.

Trabajando con Azure Resource Policies desde el CLI

Como ya comenté, Azure Resource Manager incluye la opción de definir políticas a la hora de crear recursos permitiéndonos fijar una serie de condiciones como el nombre que tienen que tener el recurso, la región donde se despliega o las etiquetas que incluye.

En un primer lugar, las políticas estaban soportadas a través de la API REST o Powershell pero no con el Azure CLI. Esto ha sido algo bastante común con anterioridad; sin embargo, la tan deseada paridad entre ambas formas de gestionar los recursos en Azure está haciéndose realidad. Ya es posible trabajar también con las políticas de recursos desde el CLI aunque la documentación no lo incluya. He realizado un pull request con los detalles de cómo hacerlo para que se incluya; sin embargo, mientras tanto podéis irlo probando de la siguiente manera

Continue reading Trabajando con Azure Resource Policies desde el CLI

Error accediendo al portal de gestión de Azure

Realizando la configuración inicial para un nuevo cliente, nos encontramos con un error accediendo al portal de Azure a nuestra suscripción. El mensaje era el siguiente:

“Some subscriptions couldn’t be retrieved. Consider checking your connection, your firewall settings, or try again later…”

Error acceso portal de Azure
Error acceso portal de Azure

Debido a esto, aunque el portal era navegable y los detalles de la suscripción eran visibles, algunas actividades como la creación de un nuevo grupo de recursos fallaba. Si estáis experimentando algo parecido, revisad vuestra configuración del firewall porque es posible que alguna de las URLs a las que accede el portal por debajo estén siendo bloqueadas.

En esta entrada del portal de Feedback podéis ver más detalles, algunas de las URLs necesarias son las siguientes:

  • *.azure.com
  • *.windows.net
  • *.azurecomcdn.net
  • *.azureedge.net
  • *.msecnd.net
  • login.microsoftonline.com
  • login.live.com

Si aún añadiendo estas en la White List continuáis con problemas, revisad en detalle los logs del Firewall/Proxy para comprobar qué URL está siendo bloqueada.

Desplegando Oracle Linux 5.x en Azure

A la hora de trabajar con cualquier plataforma es muy importante revisar las tecnologías y las versiones soportadas para poder estar cubiertos por los acuerdos de nivel de servicio y el soporte. Sin embargo, en algunas ocasiones es posible que necesitemos instalar una versión no soportada para realizar alguna prueba que en local no podemos realizar. En el caso de Azure, podéis encontrar el listado de distribuciones Linux y sus versiones soportadas directamente en la documentación.

En este caso en particular, el interés estaba en desplegar una versión antigua de Oracle Linux de la rama 5.x la cual se encuentra totalmente fuera de soporte. Dado que era para un escenario de desarrollo y pruebas como comentaba anteriormente, era aceptable asumir ese riesgo para ver si era posible hacer lo que buscábamos con Azure o no.

Si os encontráis en una situación similar, a continuación tenéis los pasos para configurar vuestra máquina Oracle Linux y poder arrancar máquinas virtuales en Azure.

Continue reading Desplegando Oracle Linux 5.x en Azure

Docker for Windows, una vista rápida del panorama actual

El pásado día 5 de mayo tuvo lugar en nuestras oficinas una nueva edición del Meetup de Docker Madrid. Gracias al equipo de DX de Microsoft España ya tenemos las sesiones disponibles en Channel 9.

En primer lugar, contamos con la participación de Ignacio Sánchez y Ramón Román de atSistemas donde me quedo sin duda con su clúster de Raspberry Pi integrado con los nuevos pipelines de Jenkins 2.0. Media hora de sesión donde ver cómo emplear Docker Swarm para la gestión de clústeres basados en Docker y la instanciación de aplicaciones basadas en microservicios. Muy útil las nuevas capacidades incorporadas en Swarm para reinstanciar los contenedores en otro nodo si el host se cae.

Tras ellos, por mi parte hice una breve introducción a cómo se encuentra el ecosistema de Docker en entornos basados en Windows. Desde los avances en Docker for Windows con Kitematic para permitirte trabajar con Docker directamente en Windows 10 con Hyper-V de forma sencilla, hasta los cambios que están llegando en la parte de Windows Server con la implementación a nivel del núcleo del soporte a contenedores.

Tenéis disponible el vídeo y la presentación

The Lord of the Keys, tus secretos a salvo con Azure Key Vault

El pásado día 16 de abril tuvo lugar en Madrid la cuarta edición del Global Azure Bootcamp. Se celebró por primera vez en 2014 con cerca de 140 asistentes, en 2015 subimos de los 200 y este año contamos con 390 personas en las oficinas de Microsoft Ibérica con tres tracks en paralelo.

En esta edición, repetí junto con Iria como speakers dejando a un lado los contenedores y las herramientas de gestión de la configuración y hablando sobre uno de los nuevos servicios de Azure: Key Vault.

Si no pudisteis asistir, aquí tenéis la descripción de la sesión junto con los materiales y el vídeo para este fin de semana:

Una de las principales preocupaciones al usar cualquier servicio que se encuentre fuera de nuestro paraguas de control es la seguridad, ¿qué sucede con la información que estoy alojando allí?. Pero no solo eso, también información más sensible como contraseñas, claves criptográficas u otros secretos que nuestras aplicaciones necesitan para funcionar correctamente. Azure Key Vault proporciona una solución rápida para gestionar estar información sensible de forma segura gracias al soprote de hardware security modules.

  • Presentación y scripts en GitHub
  • Vídeo en Channel 9