Terraform Associate
Deep Dive
Por qué existe Terraform, qué problemas resuelve con el enfoque multi-cloud y provider-agnostic, y el rol fundamental del state en la gestión de infraestructura.
Contenido
Terraform permite definir, planificar y aplicar cambios de infraestructura de forma segura y eficiente, usando un lenguaje de configuración de alto nivel (HCL) que describe el estado deseado de la infraestructura.
Escribir
Defines recursos en HCL: qué quieres que exista
Planificar
Terraform compara el estado actual vs deseado y muestra cambios
Aplicar
Terraform llama a las APIs del proveedor para hacer los cambios
Terraform usa el mismo lenguaje (HCL) y el mismo flujo de trabajo para gestionar recursos en cualquier proveedor de nube o tecnología.
| Escenario | Sin Terraform | Con Terraform |
|---|---|---|
| Multi-cloud (AWS + Azure) | 2 herramientas, 2 lenguajes, 2 flujos distintos | 1 lenguaje HCL, 1 flujo init→plan→apply |
| Reproducir entorno dev en staging | Proceso manual, propenso a diferencias | Misma configuración, distintas variables |
| Equipo distribuido | Cada persona aplica cambios a su manera | Git + PR + apply revisado por todos |
| Migrar de AWS a GCP | Reescribir todo con herramientas GCP nativas | Cambiar el provider, adaptar recursos |
| On-prem + cloud híbrido | Scripts distintos por entorno | Provider de VMware + provider de AWS, misma config |
💡 Provider-agnostic en la práctica
Terraform tiene providers para más de 3,000 servicios: AWS, Azure, GCP, Kubernetes, GitHub, Datadog, PagerDuty, Cloudflare, MongoDB Atlas y muchos más. Todo se gestiona con el mismo lenguaje y el mismo flujo.
Terraform necesita conocer el estado actual de la infraestructura para calcular qué cambios realizar. Este mapeo entre configuración y recursos reales se almacena en el archivo de estado (terraform.tfstate).
Mapeo
Registra qué recurso Terraform corresponde a qué recurso real (con su ID en el proveedor).
Diff
Al hacer plan, Terraform compara el state con la configuración para saber qué crear, modificar o destruir.
Metadatos
Guarda dependencias entre recursos para destruirlos en el orden correcto.
Rendimiento
En grandes infraestructuras, usar el state evita hacer refresh de todos los recursos en cada plan.
Colaboración
El state remoto (S3, HCP Terraform) permite que múltiples personas compartan el mismo estado.
Secretos (⚠️)
El state puede contener valores sensibles en texto claro. Trátalo como dato confidencial.
Terraform construye un grafo acíclico dirigido (DAG) de todos los recursos. Esto le permite aplicar cambios en paralelo cuando es seguro, y serializar cuando hay dependencias.
Ejemplo: VPC → Subnet → EC2
aws_vpc.main
Se crea primero — sin dependencias
aws_subnet.pub
Depende de aws_vpc.main (referencia vpc_id)
aws_instance.web
Depende de aws_subnet.pub (referencia subnet_id)
Al destruir, el orden se invierte: EC2 → Subnet → VPC.
🎯 Para el examen
vpc_id = aws_vpc.main.iddepends_on = [aws_vpc.main] (dependencia explícita)¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
¿Cuál es el propósito principal del archivo terraform.tfstate?