Una de las novedades que acompañan al nuevo portal de Microsoft Azure es el concepto Azure Resource Manager, el cual permite desplegar entornos completos a través de plantillas. En este post voy a mostrarte cómo hacerlo utilizando el proyecto de Visual Studio llamado Azure Resource Group (es necesaria la última versión del SDK de Azure, en el momento de este post la 2.6).

Al crear este tipo de proyecto aparecerá un segundo cuadro de diálogo donde podemos elegir una de las plantillas disponibles desde Visual Studio.

Con el fin de comprender este tipo de proyectos, voy a utilizar la llamada Blank Template que contiene únicamente la estructura.

- /Scripts/Deploy-AzureResourceGroup.ps1: es el script en PowerShell que subirá los archivos necesarios y llamará a Azure Resource Manager con la plantilla y los parámetros requeridos.
- /Templates/DeploymentTemplate.json: se trata de la plantilla que define cómo será tu entorno: los recursos que utilizará, la configuración de cada uno de ellos, cómo se relacionan entre sí, etcétera. Existen 5 seciones dentro de este archivo, representadas en formato JSON:
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { }, "variables": { }, "resources": [ ], "outputs": { } }
- schema: URL del esquema que se va a utilizar en la plantilla. Si navegas por él puedes ver todas las opciones disponibles a día de hoy. También nos aportará el Intellisense necesario para la edición del este archivo.
- parameters: valores que serán modificados en un futuro. Cada uno de los parámetros definidos podrá tener un valor por defecto, valores permitidos, tipo, etcétera.
- variables: Como su propio nombre indica se tratan de variables dentro de la plantilla, de tal forma que podamos reutilizarlas a lo largo del archivo, sin ser candidatas para ser un valor parametrizable. Imaginate un ejemplo sencillo donde quieres deplegar un entorno y quieres parametrizar los nombres de los recursos pero quieres que todos ellos estén en West Europe. En ese caso podríamos utilizar la variable region para ser reutilizada en cada uno de los recursos que vayamos creando.
- resources: Se trata de la sección principal del archivo. En ella se definen los recursos que se van a desplegar en la plataforma Microsoft Azure. Inicialmente la forma de añadir los recursos era valiéndose del propio Intellisense de Visual Studio, utilizando plantillas de ejemplo, o siguiendo el esquema definido en la parte superior.
Azure Resource Manager – Resources Azure Resource Manager – JSON Outline Una de las mejoras que se introdujo con la versión 2.6 del SDK es la ventana JSON Outline, la cual te permite visualizar los parámetros y variables definidos, los recursos que se van a crear y las claves establecidas en el apartado outputs.
En la versión anterior de este proyecto era más complejo crear recursos, ya que no existía ningún asistente que nos ayudara. Se ha mejorado en ese sentido dandote la posibilidad de poder agregar recursos a través de esta ventana:Azure Resource Manager – JSON Outline – Add New Resource En este caso aparecerá un asistente con los recursos disponibles a día de hoy:
Azure Resource Manager – Add resource wizard Para ver un ejemplo, puedes seleccionar el recurso WebApp, que a su vez estará asociado con un App Service plan (Server farm).
Add Resource – App Service Plan Los nombres que se piden no son el nombre del servicio que se va a crear sino un nombre identificativo del recurso. En este ejemplo, una vez creados el recurso App Service Plan y WebApp la plantilla se actualizará con nuevos parámetros y recursos.
Azure Resource Manager – WebApp and App Service Plan created - outputs: En esta sección podemos añadir un conjunto de claves para comprobar su resultado después del despliegue.
- /Templates/DeploymentTemplate.param.dev.json: en este archivo se recogerán todos aquellos valores que sean parametrizables, como por ejemplo el nombre del website, hosting plan, ubicación de los recursos, usuarios, etcétera. Está pensado para compensar el apartado parameters del archivo mencionado anteriormente.
{ "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { } }
- /Tools/AzCopy.exe: ya hable hace tiempo sobre esta herramienta en un post anterior. La misma es utilizada por el script de PowerShell para subir los archivos necesarios.
Cuando estés listo para desplegar tu nuevo entorno basta con hacer clic con el botón derecho sobre el proyecto y seleccionar la opción Deploy > New Deployment.

Aparecerá un nuevo asistente donde deberás elegir/crear el Resource Group donde quieres hacer el despliegue. De manera automática la plantilla y el archivo de parámetros serán seleccionados.

Al seleccionar la opción Deploy se mostrará una ventana con los parámetros que debemos rellenar.

Una vez completados los valores, guardamos los valores y comenzará la creación. En la ventana Output puedes comprobar el progreso.

Una vez finalizado puedes acceder al nuevo portal de Azure y buscar el conjunto de recursos por el nombre de tu Azure Resource Group.

En la página oficial de Microsoft Azure existe ahora una sección llamada Community > Templates, en el menú superior, donde podrás descargar plantillas de terceros.
¡Saludos!