Terraform Associate
Deep Dive
Fundamentos de IaC: qué es, sus dos enfoques principales, ventajas frente a la gestión manual y diferencias clave entre herramientas del ecosistema.
Contenido
Infrastructure as Code (IaC) es la práctica de definir, aprovisionar y gestionar infraestructura de TI mediante archivos de configuración legibles por máquinas, en lugar de procesos manuales o interfaces gráficas.
El código de infraestructura se trata igual que el código de aplicación: se versiona en Git, se revisa en Pull Requests, se testea y se despliega de forma automatizada.
Sin IaC (gestión manual)
Con IaC (Terraform)
Hay dos enfoques para definir infraestructura como código. Terraform usa el enfoque declarativo.
| Característica | Declarativo | Imperativo |
|---|---|---|
| ¿Qué describes? | El estado DESEADO ("quiero 3 VMs") | Los pasos a ejecutar ("crear VM, configurar, iniciar") |
| ¿Quién calcula? | Terraform calcula el diff automáticamente | Tú defines cada paso explícitamente |
| Idempotencia | Nativa — ejecutar 2 veces = mismo resultado | Debes programarla manualmente |
| Lenguaje | HCL (Terraform), YAML (K8s, CF) | Python, Bash, Go, DSL (Ansible) |
| Ejemplos | Terraform, CloudFormation, Pulumi | Ansible, Chef, Puppet, scripts Bash |
💡 Analogía del mundo real
Declarativo: Le dices a un chef "quiero una pizza Margherita" — él decide cómo hacerla.
Imperativo: Le dices al chef exactamente: "precalienta el horno a 220°C, extiende la masa, pon salsa, pon queso, hornea 12 minutos..."
Versionado
Todo cambio queda en Git. Puedes ver quién cambió qué, cuándo y por qué (PR description).
Reproducibilidad
Clonas el repo, ejecutas apply y obtienes exactamente la misma infraestructura en cualquier cuenta/región.
Idempotencia
Ejecutar apply múltiples veces produce el mismo resultado. Si ya existe, Terraform no lo recrea.
Colaboración
Múltiples personas trabajando en la misma infra con Pull Requests, revisión de código y CI/CD.
Velocidad
Levantar un entorno complejo (VPC, subnets, VMs, DBs, load balancers) en minutos, no días.
Documentación viva
El código HCL es la documentación más actualizada de tu infraestructura.
| Herramienta | Enfoque | Cloud | Caso de uso principal |
|---|---|---|---|
| Terraform | Declarativo | Multi-cloud | Provisioning de infraestructura cloud/on-prem |
| AWS CloudFormation | Declarativo | Solo AWS | Infra AWS nativa para equipos AWS-only |
| Azure Bicep / ARM | Declarativo | Solo Azure | Infra Azure nativa |
| Google Deployment Mgr | Declarativo | Solo GCP | Infra GCP nativa |
| Pulumi | Declarativo | Multi-cloud | IaC con lenguajes de programación (Python, TS) |
| Ansible | Imperativo | Multi-cloud | Configuración de SO y apps (no provisioning) |
| Chef / Puppet | Imperativo | Multi-cloud | Gestión de config con agente en servidor |
🎯 Para el examen
¿Entendiste este tema?
Pon a prueba lo que acabas de aprender
Una empresa quiere gestionar infraestructura en AWS y Azure usando el mismo lenguaje y flujo de trabajo. También necesita que los cambios sean revisados en Pull Requests antes de aplicarse. ¿Qué herramienta es más adecuada?