Terraform 1: ¿Qué es IaC y por qué Terraform?
easy⏱ 5 mincourseterraform
¿Por qué Infraestructura como Código?
En vez de crear recursos a mano, IaC los declara en archivos de texto. Terraform lee tus .tf, compara deseado-vs-actual y aplica solo los cambios necesarios para converger. Los archivos se revisan en pull requests y son reproducibles entre dev, uat y prod.
# Declarative — you describe the goal, not the click-by-click steps
resource "azurerm_resource_group" "orders" {
name = "myorg-orders-dev-rg"
location = "westus2"
}
Terraform vs ARM / Bicep / Pulumi
Las plantillas ARM son JSON solo-Azure — verbosas y difíciles de leer. Bicep es un DSL más lindo solo-Azure que compila a ARM. Pulumi te deja usar lenguajes reales (TypeScript, Go) pero acopla la infra a un runtime. Terraform usa HCL, es agnóstico de nube (miles de providers) y guarda un archivo de estado para saber qué administra. Para multi-nube o setups con muchos providers, Terraform es el default común.
Declarativo + estado = idempotencia
Como Terraform compara tus archivos contra el estado registrado, re-ejecutar una config sin cambios es un no-op. Declarás el estado final una vez; Terraform deduce los pasos de crear/actualizar/eliminar. Correr dos veces nunca duplica tu infraestructura.
Modelá el panorama de herramientas IaC
Creá un mapa iacTools donde cada clave es una herramienta (terraform, arm, bicep, pulumi) y cada valor es { language: string; cloudAgnostic: boolean }. Luego logueá los nombres de las herramientas agnósticas de nube, separados por coma (Terraform y Pulumi califican).