Terraform es la herramienta de Infrastructure as Code (IaC) de referencia creada por HashiCorp. Permite definir, aprovisionar y gestionar infraestructura en cualquier proveedor cloud (AWS, Azure, GCP, entre otros) de forma declarativa mediante su lenguaje propio HCL (HashiCorp Configuration Language). Con Terraform, la infraestructura se versiona en repositorios Git como cualquier otro código fuente, lo que habilita revisiones, rollbacks y trazabilidad completa de cada cambio.
El modelo de trabajo de Terraform se basa en un ciclo claro: write (definir recursos en archivos .tf), plan (previsualizar los cambios que se aplicarán) y apply (ejecutar los cambios contra la API del proveedor). Este flujo, combinado con la gestión de estado remoto y el bloqueo concurrente, convierte a Terraform en una pieza central de las prácticas DevOps modernas, permitiendo a equipos de cualquier tamaño colaborar de forma segura sobre la misma infraestructura.
Desde su lanzamiento en 2014, Terraform ha consolidado un ecosistema de más de 4 000 providers que cubren desde clouds públicos hasta servicios SaaS, bases de datos, DNS y herramientas de monitorización. Su arquitectura extensible, junto con el Terraform Registry para compartir módulos reutilizables, lo convierte en la opción preferida por organizaciones que buscan estandarizar y automatizar su infraestructura a escala.
Versiones modernas y novedades
Terraform ha evolucionado sustancialmente desde las series 0.12 y 1.0. Las versiones 1.5, 1.8 y 1.10 han introducido capacidades que cambian la forma de escribir y operar código HCL en producción:
- Import blocks (estables desde 1.5): declarar importaciones en HCL con
import { to = ..., id = ... }y generar la configuración conterraform plan -generate-config-out=..., sustituyendo al comando imperativoterraform import. - Moved blocks: refactorizar módulos y renombrar recursos sin recrearlos ni tocar el state manualmente.
- Pre and post conditions: validar asunciones de entrada y salida en
resource,datayoutputcon el bloquelifecycle { precondition {} postcondition {} }. - Ephemeral values (1.10): variables y outputs marcados como
ephemeral = trueque no se persisten en el state ni en los planes, ideales para credenciales rotatorias y tokens de corta vida. - Write-only attributes (1.10): atributos de recursos que se envían al provider pero nunca se leen de vuelta al state, reforzando la protección de contraseñas y secretos.
- State migration con moved y removed: los bloques
removedpermiten eliminar recursos del state sin destruirlos en el cloud, útil en divisiones de módulos. - Stacks (beta en HCP Terraform): gestión coordinada de múltiples configuraciones con dependencias tipadas entre componentes, un paso más allá de los workspaces para organizaciones grandes.
OpenTofu: el fork FOSS comunitario
Tras el cambio de licencia de Terraform a BSL (Business Source License) en 2023, la Linux Foundation respalda OpenTofu, un fork de código abierto bajo MPL 2.0 gobernado por la comunidad. OpenTofu mantiene compatibilidad drop-in con HCL y con la mayor parte del ecosistema de providers, y añade funcionalidades propias como cifrado del state nativo desde la versión 1.7. Este itinerario usa Terraform como referencia, pero todos los ejemplos de HCL funcionan en OpenTofu sustituyendo el binario; el proyecto integrador documenta explícitamente cuándo conviene una alternativa u otra.
Qué incluye este itinerario
- Fundamentos de IaC: conceptos de Infrastructure as Code, comparativa con alternativas (Pulumi, CloudFormation, Ansible, OpenTofu) y arquitectura interna de Terraform.
- Instalación y entorno: configuración del CLI, providers, primer recurso y comandos esenciales.
- Sintaxis HCL moderna: variables, locals, outputs, data sources, sistema de tipos, pre and post conditions, ephemeral values y write-only attributes.
- Recursos y providers: bloques resource, configuración de providers, lifecycle, meta-argumentos (count, for_each, depends_on) y provisioners.
- Módulos: creación de módulos reutilizables, Terraform Registry, composición y patrones de diseño.
- Gestión de estado: state local y remoto (S3 con DynamoDB, Azure Storage, GCS, HCP Terraform), locking, import blocks, moved blocks, removed blocks, taint y comandos de state.
- Workspaces y entornos: gestión multi-entorno (dev, staging y prod), variable files, backend config y stacks en HCP Terraform.
- Terraform con AWS: proveedor AWS, VPC, EC2, RDS, S3, IAM y EKS con ejemplos prácticos.
- CI/CD y equipos: integración en GitHub Actions con OIDC, HCP Terraform, Atlantis, Spacelift, drift detection, testing con terraform test, tfsec, checkov, trivy config y tflint.
Público objetivo
- Ingenieros DevOps que necesitan gestionar infraestructura cloud de forma reproducible y automatizada.
- Administradores de sistemas que buscan migrar de aprovisionamiento manual a Infrastructure as Code.
- Desarrolladores backend que quieren comprender y controlar la infraestructura donde se despliegan sus aplicaciones.
- Arquitectos cloud que diseñan infraestructuras multi-cuenta y multi-región.
- Equipos de plataforma que construyen módulos internos reutilizables para su organización.
Prerrequisitos: familiaridad con la línea de comandos (Bash o PowerShell), conceptos básicos de redes (IP, DNS, puertos) y una cuenta en al menos un proveedor cloud (AWS, Azure o GCP) para los ejercicios prácticos. No se requiere experiencia previa con Terraform ni con HCL.