Terraform
Terraform es una herramienta open source de Infrastructure as Code de HashiCorp. Permite definir, aprovisionar y gestionar infraestructura cloud de forma declarativa a través de proveedores como AWS, Azure y GCP.
¿Qué es Terraform?
Terraform es la herramienta open source más utilizada para Infrastructure as Code (IaC). Desarrollada por HashiCorp, Terraform permite la definición declarativa de toda tu infraestructura cloud en archivos de configuración. Describes el estado deseado y Terraform calcula los cambios necesarios y los ejecuta.
Para las empresas medianas, Terraform ofrece una ventaja decisiva: trabajar de forma agnóstica respecto al cloud. Ya sea AWS, Azure, Google Cloud o una combinación, Terraform gestiona la infraestructura a través de un lenguaje y flujo de trabajo unificados.
HashiCorp Configuration Language (HCL)
Terraform utiliza su propio lenguaje HCL (HashiCorp Configuration Language). HCL es declarativo, legible por humanos y diseñado específicamente para la definición de infraestructura:
- Recursos: Los bloques de construcción: cada componente de infraestructura (instancia EC2, bucket S3, VPC) se define como un recurso.
- Proveedores: Plugins que gestionan la comunicación con las APIs cloud. Más de 3.000 proveedores disponibles.
- Variables: Parametrizan tu configuración para diferentes entornos (dev, staging, prod).
- Outputs: Exportan valores como direcciones IP o nombres DNS después del apply.
- Data Sources: Leen información existente del cloud (por ejemplo, ID AMI actual).
Declarativo vs. Imperativo
Terraform funciona de forma declarativa: describes QUÉ quieres, no CÓMO debe crearse. Si dices "quiero tres instancias EC2", Terraform verifica el estado actual. Si ya existen dos, solo crea una más. Si existen cuatro, elimina una. Este enfoque es más robusto y menos propenso a errores que los scripts imperativos.
Gestión del Estado
El estado de Terraform es el corazón de Terraform. Almacena la correspondencia entre tu configuración y los recursos cloud reales. Sin estado, Terraform no sabría qué recursos gestiona.
- Estado Local: Por defecto, Terraform almacena el estado como archivo (terraform.tfstate). No apto para equipos ya que no permite edición concurrente.
- Estado Remoto: Esencial en la práctica. S3 + DynamoDB (para bloqueo de estado) es la configuración más probada para AWS. Terraform Cloud ofrece una alternativa hospedada.
- Bloqueo de Estado: Impide que dos personas hagan cambios simultáneamente. Absolutamente obligatorio en equipos.
Seguridad del Estado
El estado contiene datos sensibles como contraseñas de bases de datos en texto plano. Cifra el estado en el backend remoto (S3 Server-Side Encryption) y restringe el acceso mediante políticas IAM.
Módulos Terraform
Los módulos son configuraciones Terraform reutilizables. En lugar de repetir la misma configuración VPC en cada proyecto, creas un módulo VPC y lo llamas con diferentes parámetros. El Terraform Registry ofrece miles de módulos públicos.
Ejemplo práctico: Una empresa mediana crea tres módulos internos: VPC, clúster EKS, base de datos RDS. Cada nuevo proyecto utiliza estos módulos y tiene una infraestructura completa y consistente en minutos.
Terraform vs. CloudFormation
- Multi-Cloud: Terraform soporta AWS, Azure, GCP y más de 3.000 proveedores adicionales. CloudFormation solo AWS.
- Lenguaje: Terraform usa HCL (u opcionalmente JSON). CloudFormation usa JSON o YAML, a menudo significativamente más verboso.
- Gestión de Estado: Terraform requiere su propia gestión de estado. CloudFormation gestiona el estado automáticamente dentro de AWS.
- Ecosistema: Terraform tiene la comunidad más grande, más módulos públicos y mejor herramientas (tflint, tfsec, Terragrunt).
- Detección de Drift: terraform plan muestra cambios incluso cuando alguien ha modificado algo manualmente. CloudFormation tiene detección de drift pero es menos fiable.
Mejores Prácticas de Terraform
- Estado Remoto con Bloqueo: Desde el primer día. S3 + DynamoDB para AWS.
- Modularización: Crear módulos reutilizables para patrones comunes.
- Separación de Entornos: Archivos de estado separados por entorno. Workspaces o Terragrunt para la gestión.
- Integración CI/CD: terraform plan en el pipeline CI, terraform apply con aprobación manual.
- Fijación de Versiones: Fijar versiones de proveedores y módulos para evitar cambios inesperados.
- Code Review: Cada cambio de Terraform a través de pull requests con revisión.
- Convenciones de Nombres: Nomenclatura consistente de recursos con prefijos para entorno y proyecto.
Usar Terraform en el Mittelstand
Empieza poco a poco: primero define la infraestructura de red (VPC, subnets, security groups) en Terraform. Luego amplía gradualmente a cómputo (EC2, EKS), almacenamiento (S3, RDS) y servicios adicionales. Así construyes experiencia sin tener que migrar toda la infraestructura de inmediato.
Preguntas frecuentes sobre Terraform
Terraform es una herramienta que te permite definir infraestructura cloud (servidores, redes, bases de datos) en código en lugar de configurarla manualmente. Escribes un archivo de configuración describiendo lo que quieres, y Terraform automáticamente crea o modifica la infraestructura.
Terraform (Open Source) es gratuito. Terraform Cloud ofrece un nivel gratuito para hasta cinco usuarios. Para equipos más grandes, Terraform Cloud Team & Governance cuesta aproximadamente 20 USD/usuario/mes, y Terraform Enterprise está disponible para instalaciones auto-hospedadas.
Los fundamentos de HCL y Terraform se pueden aprender en pocos días. Crear infraestructura simple es rápido. Temas avanzados como módulos, gestión de estado e integración CI/CD requieren más experiencia; calcula unas semanas hasta estar listo para producción.
Sí, esta es una de las mayores fortalezas de Terraform. Puedes usar AWS, Azure, GCP y más de 3.000 proveedores en la misma configuración. Por ejemplo, puedes gestionar infraestructura AWS y DNS de Cloudflare en un solo proyecto.
Para equipos, un backend de estado remoto (por ejemplo, S3 + DynamoDB en AWS) es obligatorio. Permite acceso concurrente e impide que dos personas hagan cambios simultáneamente mediante bloqueo de estado. Nunca almacenes el estado en Git.
Términos relacionados
Servicios relacionados
Migración a la nube
Migración estratégica de sistemas heredados a entornos Multi-Cloud, sin pérdida de datos.
Pipelines CI/CD
Sistemas de entrega automatizados que reducen los ciclos de despliegue de semanas a minutos.
DevSecOps
Seguridad reforzada, integrada en cada capa del stack de infraestructura.
Ingeniería IaC
Expertos en Terraform y Pulumi para infraestructura reproducible y versionada.
Última actualización: abril 2026