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

Gestión de recursos en Azure Resource Manager con políticas personalizadas

Una de las gran ventajas de Azure Resource Manager (ARM) frente al modelo de Azure Service Manager (ASM) es la capacidad de permitir una gestión mucho más detallada de los permisos de acceso a nuestros recursos por diferentes usuarios gracias al modelo Role Based Access Control (RBAC). RBAC se centra únicamente en las acciones que un usuario puede realizar dentro de una suscripción; es decir: acceder a un grupo de recursos concreto, poder gestionar únicamente máquinas virtuales, visualizar en modo lectura la información visible en el portal, etc. Sin embargo, hay ciertos escenarios que no es posible cubrir con RBAC en exclusiva.

¿Qué podemos hacer si queremos restringir en qué regiones se pueden desplegar recursos por temas legales? ¿O qué servicios son los que se puede usar o no? ¿Qué pasa si queremos seguir una nomenclatura estándar en todos nuestros recursos para facilitar la gestión? Si alguna vez os habéis preguntado algo similar, las políticas personalizadas son vuestra solución.

Continue reading Gestión de recursos en Azure Resource Manager con políticas personalizadas

Azure Load Balancer en Azure Resource Manager

Uno de los elementos claves a la hora de desplegar nuestra solución dentro de máquinas virtuales en Azure es el balanceador de carga. Esto se debe a que para estar cubiertos por el acuerdo de nivel de servicio es necesario tener nuestra aplicación ejecutándose en al menos dos máquinas virtuales dentro de un conjunto de disponibilidad. Aunque ahí de forma directa no se menciona al balanceador, es la pieza clave que hace que nuestros clientes sigan recibiendo servicio si una de nuestras máquinas falla es él.

Trabajando con el modelo de Azure Service Manager, ASM o clásico, cada vez que aprovisionábamos una nueva máquina virtual automáticamente se generaba un nuevo balanceador asociado a la misma. En el caso de Azure Resource Manager, ARM o “el nuevo”, es necesario que de forma activa nosotros creemos el balanceador y hagamos las conexiones necesarias con nuestras máquinas virtuales. Esto se debe a que un balanceador es un recurso más que se encuentra bajo el provedor de recursos de Microsoft.Network. Si queréis más detalles sobre las diferencias entre ASM y ARM podéis encontrarlo en la documentación bajo el artículo “Resource Manager Deployment Model”.

¿Cuál es el problema entonces? A día hoy no existe opción en el portal de gestión de Azure para crear un nuevo balanceador de carga. Esto nos obliga a utilizar PowerShell o las nuevas plantillas de despliegues en JSON para realizarlo. Este artículo entrará en más detalle en conocer cómo crear nuestro balanceador desde dichas plantillas y las opciones de configuración que nos ofrece este tipo de recurso.

Continue reading Azure Load Balancer en Azure Resource Manager