¿Cómo usar plantillas arm para crear el despliegue en azure?

¿Cómo estáis developers? 

Hoy, desde el área Web, queremos compartir con vosotros un recurso que, considero, puede ser de gran ayuda para entender un poco más qué son las plantillas ARM (Azure Resources Manager) y en qué pueden ayudarnos:

¡Vamos allá!

Hoy en día, la infraestructura de tu aplicación está compuesta por diferentes elementos, tales como sitios web, almacenes de datos, bases de datos, webjobs, etc.

No debemos ver esto como piezas separadas, si no como pequeñas partes de una solución global. 

¿En qué nos ayuda ARM?

Nos ayuda a desplegar todos los componentes de nuestra solución, de una única vez, en un grupo de recursos. En el cual podremos desplegar, actualizar y borrar todos los recursos de una sola vez, simplificando así la administración de éstos entre los diferentes entornos. Por ejemplo: desarrollo, integración y preproducción.

El objetivo final de ARM es que, mediante la ejecución de la plantilla, ya sea por PowerShell o con Visual Studio, se puedan desplegar todos los componentes de nuestra infraestructura.

En definitiva, ARM nos ayuda a desplegar los mismos artefactos en diferentes entornos, evitando errores y dotando de gran rapidez al proceso.

¿Qué beneficios tiene el uso de plantillas ARM? 

  • Permite desplegar, gestionar y controlar todos los recursos para su solución como un solo grupo, en lugar de manejar estos recursos de manera individual.
  • Permite implementar varias veces la solución a lo largo de todo el ciclo de vida del desarrollo, y tener la confianza de que sus recursos se despliegan correctamente.
  • Permite gestionar su infraestructura a través de plantillas declarativas en lugar de scripts.
  • Permite definir las dependencias entre los recursos para que se desplieguen en el orden correcto.
  • Permite aplicar etiquetas a los recursos para organizarlos lógicamente en la suscripción.
  • Permite ver la facturación de tu organización mediante la visualización de los gastos para un grupo de recursos que comparten la misma etiqueta.

¡Vamos con la práctica!

Ya sabemos que una imagen vale más que mil palabras 🙂

Os voy a mostrar un ejemplo sencillo de cómo podemos crear un proyecto de Recursos de Azure:

Para crear una plantilla de ARM seguiremos los siguientes pasos:

  • Abriremos un nuevo proyecto de Visual Studio, en nuestro caso, la versión 2015:

  • Seleccionaremos ¨Grupo de recursos de Azure¨, tal y como podemos ver en la siguiente imagen:

  • A la hora de crear una plantilla, hay que tener en cuenta que podríamos crear plantillas de cosas muy diferentes (máquinas virtuales, sites, etc). En este caso vamos a crear un despliegue básico de un website, por lo que seleccionaremos la plantilla de ¨Web App¨:

  • Una vez hemos creado el proyecto, podremos ver en el explorador de soluciones, un esquema como el que mostramos en la foto. Donde, se puede apreciar el script de despliegue ¨Deploy-xxx.ps1¨,y los JSON (¨Website.json¨, donde están los componentes a deplegar, y ¨Website.parameters.json¨, que contiene los parámetros de configuración):

El esquema de una plantilla ARM es el siguiente:

¿Qué elementos componen la plantilla?

$Schema es una propiedad obligatoria, que contiene el esquema JSON, que se usará para la plantilla ARM. Si se crea a partir de un proyecto de Visual Studio, se rellenará automáticamente.

ContentVersion: Es otro elemento obligatorio, usado para especificar la versión de la plantilla que estás usando. Si lo generas a partir de Visual Studi, se asignará automáticamente el valor inicial de 1.0.0.0

Parameters: Como en cualquier lenguaje de programación, son valores que se le pasan a la ejecución de la plantilla, para proveerla de flexibilidad y reutilización.

Variables: Una vez más, como en los lenguajes de programación, nos permite declarar variables para poder reutilizarlas a lo largo de la plantilla.

Resources: Es un elemento obligatorio que especifica los componentes que se van a desplegar.

Output: Es la salida de resultados de la plantilla.

Podéis encontrar cientos de plantillas, según vuestras necesidades específicas, haciendo clic aquí.

Una vez tengamos la plantilla finalizada, procederemos a realizar el despliegue. Éste se puede realizar desde Visual Studio o desde PowerShell:

  • Para desplegar desde Visual Studio, lo haremos desde el menú: Implementar – Nuevo (tal y como vemos en la imagen):

Nos pedirá que nos logueemos en nuestra suscripción de Azure, y nos preguntará si queremos crear un nuevo grupo de recursos:

Nos pedirá además, si falta algún dato obligatorio para la ejecución:

Una vez lanzado el despliegue, podemos ver la salida de resultados. Tal y como se aprecia en la imagen:

Una vez nos diga que está completado, podremos ir a nuestra suscripción de Azure, para comprobar que se han creado los recursos correctamente:

  • La otra forma de ejecutar la plantilla, es mediante PowerShell:

En la salida de compilación de nuestro proyecto, podremos encontrar el script de ejecución xxx.ps1 y las plantillas JSON:

Posteriormente, ejecutaremos PoweShell:

Mediante el archivo ¨abrir¨, buscaremos nuestro script:

Después, haremos login en nuestra suscripción de Azure, mediante:

Si es necesario, y tenemos varias suscripciones, seleccionaremos la suscripción con el comando:

Y, por último, se lanzará el script para comenzar el despliegue, o pulsaremos en el botón ¨Run¨en el IDE de PowerShell:

En este artículo, hemos puesto las bases de la utilización de plantillas ARM y de su despliegue.

No hemos profundizado en todo lo que nos ofrece, pero nos puede ayudar a darnos una idea todo lo que puede hacer por nosotros.

¡Os dejo referencias para que podáis profundizar por vuestra cuenta!

MICROSOFT

RAVICHAGANTI

Escrito por Alberto Picazo, Developer Senior del área web de Bravent