Terraform permite describir la infraestructura de nube en archivos de configuración declarativos, de modo que el estado deseado del entorno queda versionado como código, en lugar de depender de cambios manuales en un portal.

¿Por qué declarativo y no imperativo?

En lugar de escribir los pasos para crear un recurso, Terraform describe cómo debería verse el resultado final; el propio Terraform calcula qué cambios aplicar comparando ese estado deseado contra el estado real actual (mediante el archivo de estado).

El proveedor de AzureRM

El proveedor azurerm permite crear grupos de recursos, redes virtuales, máquinas virtuales, cuentas de almacenamiento y prácticamente cualquier servicio de Azure usando el mismo flujo: terraform plan para previsualizar cambios y terraform apply para ejecutarlos.

Módulos reutilizables

En lugar de duplicar configuración para cada ambiente (desarrollo, pruebas, producción), conviene encapsular patrones comunes en módulos parametrizables, de forma que un mismo módulo de "red virtual segura" se reutilice en distintos proyectos con solo cambiar variables.

Estado remoto y control de cambios

El archivo de estado de Terraform debe guardarse en un backend remoto (por ejemplo, una cuenta de Azure Storage) en lugar de en el equipo de un desarrollador, y los cambios deben pasar por revisión en un pipeline de CI/CD antes de aplicarse en producción.

Beneficios concretos

  • Los entornos se vuelven reproducibles: se puede recrear la infraestructura desde cero si algo falla.
  • Los cambios quedan documentados en el historial de control de versiones.
  • Se reduce la configuración manual "a mano" que nadie recuerda cómo se hizo.