Despliegue de infraestructura Azure con Terraform

Resumen

Desplegar infraestructura en Azure con Terraform es el paso que conecta el código de tu API con el entorno real donde vivirá. Aprenderás a crear los archivos base, inicializar el backend remoto y aplicar los recursos necesarios para hospedar una aplicación contenerizada, una habilidad clave para cualquier perfil DevOps moderno.

¿Por qué la parte ops importa tanto como el código?

La parte dev cubre el código, las pruebas y la lógica de la API. La parte ops se encarga del despliegue de la infraestructura donde esa aplicación se va a hospedar. Y aquí viene lo interesante: los roles ya no están tan separados.

Hoy el programador necesita conocer la infraestructura donde correrá su código, y el de infraestructura necesita entender qué tipo de aplicación va a desplegar. Esa mezcla de habilidades dio origen a lo que muchos llaman el ingeniero DevOps especialista, un perfil híbrido que la industria adoptó casi de forma natural.

¿Qué hace un ingeniero DevOps? Combina habilidades de desarrollo y operaciones para automatizar el despliegue, la configuración y el mantenimiento de la infraestructura donde corre una aplicación.

¿Cómo organizar los archivos de Terraform para Azure?

Dentro de tu proyecto vas a crear una carpeta llamada Infra, y ahí dentro irán los archivos que estructuran tu despliegue [01:30].

La configuración base se divide en cuatro archivos:

  • backends.tf: define dónde se guarda el estado de Terraform. Necesitas tener creada previamente una cuenta de almacenamiento en Azure que hospede ese estado.
  • provider.tf: declara el proveedor de Azure usando Azure RM y agrega el identificador de tu suscripción.
  • variables.tf: contiene las variables que usará tu despliegue. Puedes asignar valores por defecto para ganar tiempo, aunque lo ideal es crear un archivo terraform.tfvars para sobrescribir ese comportamiento.
  • main.tf: aquí van todos los recursos que se van a desplegar.

¿Qué recursos se despliegan en main.tf?

El archivo main.tf agrupa los recursos que sostienen la API:

  • Un grupo de recursos que actúa como contenedor lógico en Azure.
  • Una instancia de Application Insights para monitoreo y telemetría.
  • Un Log Analytics que comunica los componentes y centraliza los logs.
  • Un Container App Environment, que es el entorno donde se hospedarán los contenedores de la aplicación [03:30].

¿Cuál es la secuencia de comandos para desplegar con Terraform?

Una vez que la carpeta Infra está lista, te ubicas en ella desde la terminal y sigues la secuencia documentada.

  1. Inicializar el backend remoto con el SAS token de tu cuenta de almacenamiento:

bash terraform init -backend-config="sas_token=TU_SAS_TOKEN"

  1. Generar el plan y guardarlo en un archivo para revisar los cambios antes de aplicarlos:

bash terraform plan -out=plan.out

  1. Aplicar el plan para crear los recursos en Azure:

bash terraform apply plan.out

Cuando el apply termina, puedes confirmar el despliegue desde el portal de Azure. En la lista de grupos de recursos vas a ver el Rg-warn recién creado con todo lo necesario para trabajar.

¿Para qué sirve el comando terraform plan -out? Genera un archivo con el plan de cambios que Terraform va a ejecutar. Así puedes revisarlo antes de aplicarlo y asegurarte de que solo se modifique lo que esperas.

¿Cuándo usar terraform destroy?

Este despliegue manual es solo una prueba para validar que la configuración funciona como esperas. Por eso, tras confirmar que todo quedó bien, ejecutas:

bash terraform destroy

Terraform pedirá una confirmación, presionas enter y todos los recursos se eliminan. Es la forma limpia de cerrar la prueba antes de pasar al siguiente paso [06:50].

¿Qué sigue después de validar la infraestructura manualmente?

Desplegar la infraestructura a mano sirve para comprobar que cada archivo y cada recurso están bien definidos. Pero lo que realmente quieres es que ese mismo despliegue ocurra de forma automatizada dentro de un proceso de CI/CD.

Con CI/CD configurado, agregar nuevas instancias, nuevos elementos o cualquier cambio que tu arquitectura necesite se desplegará solo, sin intervención manual. Esa es la pieza que convierte un despliegue funcional en un flujo de trabajo profesional.

¿Ya tienes lista tu cuenta de almacenamiento y tu SAS token para inicializar el backend? Cuéntame en los comentarios cómo te fue con tu primer terraform apply.