ARM

Azure Resource Manager en VS (I)

Uno de los mayores cambios que se han producido últimamente en lo que respecta a Azure, es el cambio del modelo de gestión de los recursos, pasando del modelo clásico, al Model Resource Manager (ARM a partir de ahora). Dicho cambio ha sido gradual, pero su total implantación ha supuesto un gran cambio y mejora a la hora de gestionar nuestros recursos.

En este artículo veremos una introducción al mundo de Azure Resource Manager, hablando en forma general de en qué consiste, qué nos aporta, así como integraciones que nos permite, problemas…

Normalmente, toda la infraestructura que conlleva el desarrollo de una aplicación, suele incluir normalmente componentes como máquinas virtuales, cuentas de almacenamiento o redes virtuales, que no son entes independientes, sino que funcionan como parte del grupo.

ARM nos permite gestionar todos los recursos de una solución de forma centralizada y como grupo, pudiendo realizar operaciones de implementación, actualización y eliminación coordinada sobre todo el grupo. Todo esto se gestiona a través de una plantilla fácilmente usable para implementaciones a través de diferentes entornos.

Terminología

Si somos nuevos en el mundo de ARM, es necesario que tengamos claros varios términos antes de empezar a trabajar:

  • Recurso: Un recurso es un elemento administrable disponible a través de Azure. Algunos de los recursos más comunes son máquinas virtuales, cuentas de almacenamiento, aplicaciones web…
  • Grupo de recursos: Es un contenedor en el que se pueden crear uno o más recursos. Nos ayuda a tener los recursos organizados y mejor gestionados, y su utilidad principal es contener los recursos relacionados con una misma solución, o en su defecto aquellos que queramos administrar de manera agrupada.
  • Proveedor de recursos: Un proveedor de recursos es un servicio que nos proporciona los recursos que se pueden implementar y administrar mediante Resource Manager. Cada proveedor de recursos nos ofrece una serie de operaciones para trabajar con los recursos que se implementan a través de él. Ejemplos de proveedores de recursos son Microsoft.Compute, Microsoft.Storage o Microsoft.Web.
  • Plantilla de Resource Manager: La plantilla de ARM es un archivo en formato JSON en la que podemos definir uno o más recursos para implementar en un grupo de recursos. No sólo se queda aquí, sino que también podemos definir las dependencias entre los diferentes recursos implementados, así como administrar sus parámetros, modificar o desplegar sus configuraciones (por ejemplo, desplegar las AppSettings y las ConnectionStrings de una Web App), e incluso desplegar código de nuestros proyectos, como por ejemplo el código de nuestra Web App. La plantilla se puede usar de forma muy sencilla para implementar los recursos de manera repetida y uniforme.
  • Sintaxis declarativa: Tipo de sintaxis que nos permite establecer lo que pretendemos crear, sin tener que escribir toda la secuencia de comandos de programación necesaria para crearla. La plantilla de Resource Manager es un ejemplo de sintaxis declarativa.

Integración con Visual Studio

En la última versión de Visual Studio tenemos integración con ARM. Podemos añadir a nuestra solución un proyecto de Grupo de Recursos, el cual tiene la siguiente estructura de ficheros:

  • azuredeploy.json: Es el fichero de la plantilla de ARM. En este fichero definiremos los diferentes recursos que formen parte de nuestra solución, así como diferentes parámetros o variables que nos servirán para parametrizar nuestros recursos a la hora del despliegue. La diferencia entre un parámetro y una variable es que los parámetros se tienen que introducir explícitamente a la hora de realizar el despliegue, mientras que las variables son otro tipo de valores, generados de forma estática o a partir de parámetros.
  • azuredeploy.parameters.json: Es el fichero, en formato JSON también, en el que introduciremos los valores de los parámetros definidos en la plantilla, para que sean obtenidos y usados en el momento del despliegue.
  • Deploy-AzureResourceGroup.ps1: Es el script Powershell que ejecutaremos para realizar la implementación de nuestra plantilla.

Desde Visual Studio podemos crear el grupo de recursos destino y realizar implementaciones, pudiendo introducir los parámetros a través de una interfaz gráfica y sin tener que abrir la consola de Powershell.

Además, tendremos una consola en la que podremos ver el progreso de la implementación, sin salir de Visual Studio.

Todo esto nos permite, entre otras muchas cosas, un gran avance en la gestión del ciclo de vida de nuestros recursos de Azure, ya que podemos tener nuestras plantillas en TFS, y llevar un control de versiones, diferencias entre versiones…

Además, el portal de Azure nos proporciona, a nivel de grupo de recursos, una pestaña de Script de Automatización, en la cual podremos encontrar todos los datos necesarios para montar nuestro proyecto de grupo de recursos que implemente este grupo de recursos: plantilla, parámetros, script, etc.

En Visual Studio Online también tenemos la posibilidad de conectar todo el proceso de Integración Continua y Despliegue Continuo con nuestro proyecto de Grupo de Recursos, permitiéndonos configurar el despliegue continuo de Visual Studio Online, de forma que uno de los pasos sea el despliegue de nuestra plantilla de ARM.

Conclusiones

ARM ha supuesto un gran avance en la gestión de nuestra infraestructura en Azure. No obstante, existen ciertos problemas a la hora de realizar las implementaciones con los que nos podemos encontrar en la práctica, así como algunos elementos de Azure que todavía no están integrados y no disponen de soporte para ARM o de esquema (o no completamente funcional).

En siguientes artículos, profundizaremos un poco más en éstos temas, viendo cómo podemos solucionar los problemas más comunes, elementos no soportados, cuál es la forma más cómoda de empezar a trabajar, qué aspecto o campos tiene una plantilla típica de ARM y qué utilidad tienen.

Compartir
Publicado por
Adrián Del Rincón López

Este sitio web utiliza cookies para que tengas la mejor experiencia de usuario. Si continuas navegando, estás dando tu consentimiento para aceptar las cookies y también nuestra política de cookies (esperemos que no te empaches con tanta cookie 😊)