Cómo no romper los límites, cómo crear una buena arquitectura y cómo hacer un buen mantenimiento

Infraestructura como Código, con Azure Bicep

La Infraestructura como Código es uno de esos grandes avances de la tecnología que pasan desapercibidos en nuestro día a día.  Uno de los objetivos es definir nuestra infraestructura en código que nos permita hacer repetible la ejecución en diferentes entornos o recuperar toda la infraestructura en caso de desastres. Si estáis en algún tipo de cloud, debería de ser un requisito imprescindible.

Si hablamos de Azure, el propio cloud de Microsoft está basado en Azure Resource Manager (ARM), el servicio de implementación y administración de Azure. ARM permite definir nuestra infraestructura usando un sistema de plantillas con una sintaxis declarativa que podemos clasificar como IaC,

Cómo crear recursos con una plantilla ARM

Pongamos un ejemplo para entender cómo crear nuestra infraestructura usando ARM. Nuestra aplicación necesita una máquina virtual, un App Service y un SQL Azure.

Hablemos de la plantilla necesaria para crear la máquina virtual.

En la plantilla podemos ver cómo se definen los recursos necesarios para crear una máquina virtual:

  • Un almacenamiento de diagnóstico Microsoft.Storage/storageAccounts
  • Un disco administrado Microsoft.Compute/disks
  • Una red virtual Microsoft.Network/virtualNetworks
  • Una interfaz de red conectada a la red virtual Microsoft.Network/networkInterfaces
  • La máquina virtual (por fin) Microsoft.Compute/virtualMachines con los recursos anteriores asociados

Fácil pero complejo de leer y mantener, ¿no os parece?

Azure Bicep al rescate

Las plantillas de IaC no son sencillas. Fijaos en la complejidad del json que simplemente crea una máquina virtual. Las plantillas ARM son muy potentes, incluso en la última versión podemos ejecutar scripts PowerShell o de Az Cli, pero la complejidad que esto implica no ayuda en la adopción de IaC.

Para ayudar con esta complejidad, Microsoft ha desarrollado un lenguaje de dominio (DSL) llamado Azure Bicep. Bicep nos ayuda a desarrollar plantillas ARM con un lenguaje sencillo que nos ayuda a quitar complejidad de las plantillas ARM, pero no nos resuelve el que necesitamos tener conocimiento de ellas para poder aplicar las configuraciones.

Como podemos ver en la imagen, podemos generar el fichero .json de una plantilla ARM usando un comando de compilación Bicep que compila nuestro fichero .bicep o directamente realizar el despliegue con Az Cli o con PowerShell con el fichero .bicep.

En el fragmento de código anterior, tenemos la misma implementación de los recursos necesarios para crear una máquina virtual usando Bicep. ¿Qué os parece? Bastante más simple de leer y, os invito a probarlo, más simple de desarrollar.

Aunque existen otras opciones como Terraform, una herramienta que usa ficheros de configuración declarativos para implementar la infraestructura en un entorno multi-cloud, Pulumi o Farmer, Azure Bicep puede ofrecer las siguientes ventajas:

  • Soporte a nuevos recursos de ARM desde el primer día, algo que en otros productos como Terraform no es aplicable, tenemos que esperar a que se haga la implementación adecuada.
  • El modelo de despliegue de Bicep está soportado en Azure que es quien controla el estado de los recursos y el flujo de despliegue, en otros, como Terraform, el estado se mantiene en local, con el riesgo de pérdida o sobreescritura.

Por su puesto, Azure Bicep es sólo para Azure, si tenéis un entorno multi-cloud y queréis mantener un único lenguaje o framework de despliegue, Bicep no encaja.

mm

Sobre Alberto Diaz Martin

Alberto Diaz cuenta con más de 15 años de experiencia en la Industria IT, todos ellos trabajando con tecnologías Microsoft. Actualmente, es Chief Technology Innovation Officer en ENCAMINA, liderando el desarrollo de software con tecnología Microsoft, y miembro del equipo de Dirección. Para la comunidad, trabaja como organizador y speaker de las conferencias más relevantes del mundo Microsoft en España, en las cuales es uno de los referentes en SharePoint, Office 365 y Azure. Autor de diversos libros y artículos en revistas profesionales y blogs, en 2013 empezó a formar parte del equipo de Dirección de CompartiMOSS, una revista digital sobre tecnologías Microsoft. Desde 2011 ha sido nombrado Microsoft MVP, reconocimiento que ha renovado por séptimo año consecutivo. Se define como un geek, amante de los smartphones y desarrollador. Fundador de TenerifeDev (www.tenerifedev.com), un grupo de usuarios de .NET en Tenerife, y coordinador de SUGES (Grupo de Usuarios de SharePoint de España, www.suges.es)
Esta entrada ha sido publicada en Azure y etiquetada como , , . Enlace permanente .
ENCAMINA, piensa en colores