Terraform Associate

Deep Dive

Practicar ahora
D1 · Fundamentos de IaC y Terraform

Conceptos de Infrastructure as Code

Fundamentos de IaC: qué es, sus dos enfoques principales, ventajas frente a la gestión manual y diferencias clave entre herramientas del ecosistema.

¿Qué es Infrastructure as Code?

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)

  • Clics en consola web — pasos no documentados
  • Scripts ad-hoc que nadie mantiene
  • Imposible reproducir entornos exactamente
  • Sin historial de quién cambió qué
  • Dependencia de "saber" de una persona

Con IaC (Terraform)

  • Código en Git — historial completo
  • Revisión en PR antes de aplicar
  • Entornos reproducibles e idénticos
  • Rollback con git revert + apply
  • El código ES la documentación

Declarativo vs Imperativo

Hay dos enfoques para definir infraestructura como código. Terraform usa el enfoque declarativo.

CaracterísticaDeclarativoImperativo
¿Qué describes?El estado DESEADO ("quiero 3 VMs")Los pasos a ejecutar ("crear VM, configurar, iniciar")
¿Quién calcula?Terraform calcula el diff automáticamenteTú defines cada paso explícitamente
IdempotenciaNativa — ejecutar 2 veces = mismo resultadoDebes programarla manualmente
LenguajeHCL (Terraform), YAML (K8s, CF)Python, Bash, Go, DSL (Ansible)
EjemplosTerraform, CloudFormation, PulumiAnsible, 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..."

Ventajas del enfoque IaC

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.

Herramientas IaC comparadas

HerramientaEnfoqueCloudCaso de uso principal
TerraformDeclarativoMulti-cloudProvisioning de infraestructura cloud/on-prem
AWS CloudFormationDeclarativoSolo AWSInfra AWS nativa para equipos AWS-only
Azure Bicep / ARMDeclarativoSolo AzureInfra Azure nativa
Google Deployment MgrDeclarativoSolo GCPInfra GCP nativa
PulumiDeclarativoMulti-cloudIaC con lenguajes de programación (Python, TS)
AnsibleImperativoMulti-cloudConfiguración de SO y apps (no provisioning)
Chef / PuppetImperativoMulti-cloudGestión de config con agente en servidor

🎯 Para el examen

  • Terraform ≠ Ansible: son complementarios. Terraform crea la infra (VMs, redes, DBs). Ansible configura lo que hay dentro (instala paquetes, deploya apps).
  • Terraform vs CloudFormation: ambos declarativos, pero Terraform es multi-cloud y CloudFormation es exclusivo de AWS.
  • Terraform vs Pulumi: mismo propósito (declarativo, multi-cloud), pero Pulumi usa Python/TypeScript/Go en lugar de HCL.

¿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?