Infraestructura como Código con Azure ARM… otro asunto de DevOps
Si todavía no tienes claro en que consiste DevOps, te invito que leas el artículo Entre más DevOps… antes de continuar.
La Infraestructura como Código (IaC) hace referencia a la práctica de utilizar scripts para configurar la infraestructura de computación en lugar de hacerlo manualmente, trata la configuración de la infraestructura exactamente como el software de programación, estamos hablando de máquinas virtuales, bases de datos entre muchos otros servicios más ofrecidos por algún proveedor computo en la nube como Microsoft Azure.
La IaC permite a recursos como máquinas virtuales gestionarse de manera programada, lo que elimina la necesidad de realizar configuraciones manuales o actualizaciones de componentes individuales de hardware. Esto hace que la infraestructura sea muy escalable y replicable. Un solo usuario puede implementar y gestionar una o cientos de recursos como máquinas virtuales usando el mismo conjunto de código (por decir algún ejemplo).
El concepto de IaC es el marco del que ha surgido DevOps. Una línea cada vez más fina entre el código que ejecuta aplicaciones y el que configura la infraestructura, implica que los desarrolladores de aplicaciones y los profesionales de operaciones compartan cada vez más un conjunto de responsabilidades laborales.
Azure Resource Manager
Si ya has tenido la oportunidad de utilizar Microsoft Azure, tendrás muy claro que desde el portal podemos desplegar una gran cantidad de servicios en la nube, basta con hacer unos clics y llenar algunos campos de información para lograr este objetivo. Pero ¿existe otra forma de hacerlo? la respuesta es «si» y de varias formas, en esta ocasión nos centraremos en ARM o mejor conocido como Azure Resource Manager.
Características de ARM
- Orientado a soluciones completas o proyectos.
- Vinculación entre servicios por grupo.
- Administración conjunta.
- Etiquetado de servicios.
Vale la pena definir ahora algunos conceptos esenciales:
- Recurso: Prácticamente estamos hablando de cualquier servicio disponible en la nube de Azure, desde una sencilla página web, hasta un autómata con Machine Learning.
- Grupo de recursos: Es un contender que vincula una cantidad determinada de servicios para un proyecto en específico, por ejemplo: Pagina web, base de datos, servicio móvil, worker role, etc. Las operaciones generales que se le pueden aplicar a un grupo de recursos son: Implementación, actualización y eliminación, por lo que debemos estar conscientes que una operación de estas tendrá efecto sobre todos los recursos asociados. Los recursos pueden encontrarse en regiones diferentes, aunque es más recomendable que todos se encuentren bajo una misma cercanía.
- Plantilla: Se puede definir como un archivo de texto plano en formato JSON que define los recursos que se implementarán bajo un Grupo de recursos.
- Proveedor: Mejor conocido como Resource Manager en el core de Azure. Aquí hablamos de poder computo, cantidad de almacenamiento, tipo de conectividad. Por mencionar algunos de ellos: Microsoft.Storage, Microsoft.Compute, Microsoft.Authorization y muchos otros más.
Acerca de las Plantillas
Las plantillas básicamente definen la infraestructura y configuración de una solución en Microsoft Azure. Resource Manager de Azure toma estas plantillas en formato JSON y las traduce en llamadas API REST para su ejecución. Por ejemplo:
Las plantillas pueden agrupar los recursos en varias maneras, estos son ejemplos:
Haciendo uso de ARM
Después de esta introducción general veamos ahora como podemos poner en practica Infraestructura como Código haciendo uso de Azure Resource Manager y desplegar un mismo tipo de servicio (virtual machine) de diferentes maneras:
- Desde el portal de Azure con ARM.
- Desde Visual Studio hacia Azure con ARM.
- Desde el sitio oficial de Quick Starts y GitHub hacia Azure con ARM.
- Desde CLI hacia Azure con ARM.
- Desde PowerShell hacia Azure con ARM.
Sígueme en Twitter @vmorenoz
¿Te gustó este artículo? Únete a Facebook en MicrosoftLand