Automatizando infraestructura como Código para ambiente de desarrollo de aplicación Linux con Bicep en la nube de Azure

ESCENARIO:

La empresa Mordor SA requiere automatizar el despliegue de recursos de infraestructura sobre la nube de azure para una aplicación que usará el área de vinculaciones de nuevas cuentas de la gerencia de ventas con un nuevo producto. Por tanto el área de  IT que soporta la iniciativa, requiere iniciar pruebas en el ambiente de desarrollo con un diseño de arquitectura sobre azure, para lo cual contrataron previamente a un arquitecto especialista que diseñó y aprobó la arquitectura de componentes azure a desplegar.

 

El área de automatización y Devops de Mordor SA requiere una solución que automatice la infraestructura, adicionalmente requieren que todo el proceso de posterior instalación y aplicación de configuración y software sobre la infraestructura sea también versionado/automatizado en Azure Devops.

ANALISIS Y RELEVAMIENTO DE INFORMACIÓN: :

En este punto es importante tener en cuenta los siguientes aspectos para empezar a tomar decisiones que nos lleven a la estrategia que
construiremos para ejecutar nuestro IaC.

                      Descargar Documento de Despliegue Automatizado

Contextualización, alcance de proyecto y generalidades: Se requiere conocer el contexto general del producto final/ aplicación y el objetivo a cumplir de la infraestructura, especialmente se debe analizar desde el punto de vista de administración azure, como tener en cuenta en qué suscripción se desplegará y si requiere acceso a recursos de otras suscripciones, se deben tener en cuenta las redes y el tipo de arquitectura a utilizar.

Elementos Transversales (ips, redes): Hace referencia a levantar la información necesaria para que a nivel de networking sean desplegados los recursos correspondientes, por ejemplo, para crear un databricks o una azure function es necesario conocer la información de las subredes a utilizar bien sea porque se hayan definido anteriormente o se creen dentro del mismo código iac.

Definir control de versionamiento: Hace referencia a la herramienta de almacenar y versionar el código, en este caso hablamos de Azure Devops Repos.

Diseños de Infraestructura (Arquitecturas): Conocer los diagramas, topologías y diseños de arquitectura o despliegue que pueden acercarnos a un mejor entendimiento global del entorno o aplicación que estamos automatizando y cómo, a partir de ese conocimiento aportar en la construcción de los pipelines o en el scripting necesario para customizar la infraestructura creada.

Documento de Despliegue de Componentes: Hace referencia al documento donde se consigne finalmente con los detalles técnicos y nombres específicos lo necesario para proceder con la automatización en el lenguaje de iac a utilizar.

Dadas las tareas anteriores se tiene ya un conocimiento general y especifico de los requerimientos para la automatización y las siguientes conclusiones a partir de las cuales puede efectuarse un plan de acción.

REQUERIMIENTOS Y CONCLUSIONES: :

  • Se requiere instalar una aplicación que trabajará en una Virtual Machine Linux.
  • La automatización a realizar será para ambiente de desarrollo, posteriormente personal interno de la compañía se encargará de versionar esas plantillas hacia ambientes de TEST y PROD.
  • El despliegue se ejecutará en un nuevo Grupo de Recursos que debe crearse con las plantillas de iac dentro de una suscripción existente de desarrollo.
  • Por estrategia del cliente y alineación a sus procesos el lenguaje de código para la infraestructura será Bicep.
  • Se utilizará Azure Devops para el proceso de versionamiento y despliegue continuo.
  • La aplicación se instalará posterior al despliegue del IaC via scripts, el código de bicep no interfiere en nada con la instalación de la aplicación puesto que es un proceso posterior ejecutado dentro del pipeline.
  • Los elementos transversales y de networking ya existen y se nos dan los datos de las IPs, vnets y subnets requeridas dentro del documento de despliegue.
  • Por especial recomendación del cliente se requiere crear el código contemplando el versionamiento y uso futuro hacia los ambientes TEST y PROD.
  • La infraestructura debe ser de carácter privado.
  • El nombre de los recursos debe indicar el ambiente en que se está desplegando y deben finalizar en -code
  • Revisar el documento de despliegue y ajustarse a los alineamientos especificados.

Arquitectura de despliegue:

Topología de Networking:

Listado de componentes:
1. VIRTUAL MACHINE
1.1 NETWORK SECURITY GROUP
1.2 NETWORK INTERFACE
2. AZURE SQL SERVER
2.1 AZURE SQL DATABASE
2,2 SQL SERVER PRIVATE ENDPOINT

SOLUCIÓN:

El siguiente video muestra la metodología y el proceso de principio a fin para la construcción del código IaC.

Para definir la estrategia de codificación se determinan los campos del documento de despliegue que se convertirán en parámetros a usar dentro del código.

Se procede con la elaboración del código como se muestra en el video y se consigue el siguiente resultado.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *