Automatizando infraestructura como Código para ambiente de desarrollo 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
ASPECTOS IMPORTANTES A TENER EN CUENTA:
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:
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.
Se procede con la elaboración del código como se muestra en el video y
se consigue el siguiente resultado.