Contar con una infraestructura confiable y bien estructurada es fundamental al momento de desarrollar y desplegar aplicaciones. Utilizando herramientas como Terraform y servicios como Azure, podemos simplificar este proceso considerablemente, adoptando de este modo buenas prácticas que facilitan la integración continua (CI) y entrega continua (CD).
¿Qué es DevOps y por qué ha cambiado su enfoque?
DevOps es una metodología que integra dos aspectos clave del desarrollo de software: la parte de desarrollo (dev), consistente en la escritura de código y realización de pruebas, con la parte operativa (ops), encargada de la infraestructura necesaria para hospedar la aplicación. En la industria actual, estos dos roles tienden a converger, formando al ingeniero DevOps especialista, capaz de dominar ambas áreas.
¿Cómo desplegar infraestructura utilizando Terraform en Azure?
Para llevar a cabo esta tarea, existen pasos concretos que seguir apoyándonos en archivos y comandos específicos de Terraform.
¿Qué archivos y directorios necesitamos crear?
Primero, dentro del directorio infra, se deben crear los siguientes archivos:
backends.tf: aquí se almacena la configuración del estado, apuntando hacia una cuenta de almacenamiento previamente creada.
provider.tf: para establecer el proveedor de Azure RM con el identificador de la suscripción correspondiente.
variables.tf: configura las variables necesarias para el despliegue de los recursos.
main.tf: incluye el bloque de Terraform que define los recursos necesarios.
¿Qué comandos se utilizan para desplegar la infraestructura?
Una vez preparados los archivos, se ejecutan los siguientes comandos:
Terraform init: inicializa y configura el backend especificado.
terraform init -backend-config="<tu_SaaS_token>"
Terraform plan: visualiza y almacena el plan de acción que Terraform realizará.
terraform plan -out=plan.out
Terraform apply: aplica los cambios indicados por el plan.
terraform apply plan.out
Finalmente, para eliminar la infraestructura, se utiliza:
terraform destroy
¿Qué componentes se están desplegando en Azure?
Terraform despliega una serie de recursos necesarios para hospedar la aplicación en Azure, tales como:
Un grupo de recursos (RG1).
Application Insights, para monitoreo de aplicaciones.
Log Analytics, para analizar y administrar registros entre recursos.
Container App Environment, alojando diversos contenedores.
Automatizar estas tareas permitirá adaptarse constantemente a las nuevas necesidades de tu arquitectura mediante procesos continuos de CI/CD. De esta manera, se facilitarán cambios rápidos y seguros en tu infraestructura según la demanda o evolución del proyecto.
¿Has implementado ya metodologías y herramientas similares en tus proyectos? Comparte tu experiencia con Terraform y Azure en los comentarios para enriquecer el conocimiento de nuestra comunidad.
Managed Environment Name: "devops-env"): performing CreateOrUpdate: unexpected status 409 (409 Conflict) with error: MissingSubscriptionRegistration: The subscription is not registered to use namespace 'Microsoft.App'. See `` for how to register subscriptions.
simplemente registren el provider en su subscripción
az provider register --namespace Microsoft.App
Y también estos (son dependencias frecuentes):
az provider register --namespace Microsoft.OperationalInsights
az provider register --namespace Microsoft.Insights
Pueden comprobar si ya quedó activo con:
az provider show --namespace Microsoft.App--query "registrationState"
Debe devolver "Registered". Si sale "Registering", esperar un par de minutos y volver a correr terraform apply.
Terraform es una herramienta de infraestructura como código (IaC) que permite gestionar y desplegar infraestructura en la nube de manera automatizada.
Imagina que quieres crear una cancha de baloncesto en un parque. Con Terraform, defines los elementos necesarios (pistas, canastas, bancos) en un archivo de configuración. Luego, al ejecutar Terraform, se encarga de crear todo eso en el parque (en la nube) automáticamente. Así, puedes repetir el proceso en diferentes parques (nubes) con solo modificar un archivo.
Es un enfoque eficiente para manejar infraestructura compleja.
DevOps mas que un role se ha vuelto una cultura donde todos tienen responsabilidad en el éxito del desarrollo y despliegue.
De hecho para no pasar todo el token inline, podemos crear un archivo dentro de infra/ llamado backend.config y agregar la siguiente configuración. De esa manera es más seguro y solo corremos el comando de la siguiente manera:
terraform init -backend-config=backend.config
Hacer estos cambios en el portal de azure tiene costos?
Sería muy bueno que en los pasos que haces nos indiques en cuales hay que tener cuidado con los costos.
En esta clase se abordó el despliegue de infraestructura utilizando Terraform en Azure. Se explicó la importancia de combinar habilidades de desarrollo y operaciones (DevOps) para crear y administrar aplicaciones. Se crearon archivos esenciales como backend.tf, provider.tf, variables.tf, y main.tf, donde se configuró el proveedor de Azure. Se mostraron comandos para inicializar Terraform, planificar y aplicar configuraciones, y la importancia de verificar el estado en Azure. Se mencionó que el siguiente paso será integrar CI/CD para automatizar el despliegue.
Si quieren acceder al curso de TerraForm, acá está el enlace.