Despliegue de infraestructura con Terraform en Azure

Clase 12 de 22Curso de Introducción a DevOps

Resumen

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:

  1. Terraform init: inicializa y configura el backend especificado.
terraform init -backend-config="<tu_SaaS_token>"
  1. Terraform plan: visualiza y almacena el plan de acción que Terraform realizará.
terraform plan -out=plan.out
  1. 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.