Terraform para SREs y DevOps: Infraestructura como código y que se versiona


Terraform es una herramienta esencial para gestionar infraestructura como código (IaC). A diferencia del enfoque manual o de scripts ad hoc, Terraform te permite versionar, auditar y reproducir tu infraestructura de forma declarativa.
Como SRE o DevOps, dominar Terraform significa tener control sobre tu entorno cloud con la misma disciplina que tienes sobre tu código.
Conceptos fundamentales
Término | Qué es |
Provider | Define qué plataforma estás gestionando (AWS, GCP, Azure...) |
Resource | Es la unidad de infraestructura: una instancia, un bucket, etc. |
Module | Conjunto reutilizable de recursos |
State | Archivo que guarda la representación actual de tu infraestructura |
Backend | Dónde se guarda el estado (local, S3, etc.) |
Ejemplo mínimo: bucket S3 en AWS
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "logs" {
bucket = "my-log-bucket"
acl = "private"
}
Comandos esenciales
terraform init # Inicializa el proyecto
terraform plan # Muestra qué se va a aplicar
terraform apply # Aplica los cambios
terraform destroy # Elimina los recursos
Buenas prácticas
Usa módulos incluso para estructuras pequeñas.
Controla versiones de proveedores.
Formatea y valida:
terraform fmt terraform validate
Usa
tflint
ycheckov
para asegurar calidad y seguridad.Nunca guardes
terraform.tfstate
en local si trabajas en equipo.
Organización por entornos
Usa archivos
.tfvars
para manejar configuraciones por entorno:terraform apply -var-file="prod.tfvars"
Divide por carpetas o usa
workspaces
:terraform workspace new staging
CI/CD con Terraform
Usa Terraform como parte de tus pipelines para evitar cambios manuales. Ejemplo con GitHub Actions:
- name: Terraform Init
run: terraform init
- name: Terraform Plan
run: terraform plan -input=false
Problemas comunes
Estado corrupto: siempre usa
terraform state list
y backups del estado.Cambios fantasmas: revisa los
lifecycle
blocks.Drift: usa
terraform plan
regularmente para detectar diferencias.
Terraform como fuente de verdad
La infraestructura ya no vive en tu consola ni en tu click manual. Vive en un repositorio, versionada, revisable y auditable.
Cada recurso tiene su historia, su autor, y su propósito claro.
Terraform es más que una herramienta: es una filosofía. Infraestructura como código no es solo automatización, es control y claridad.
Sigue explorando, versionando… y sí, cayendo más profundo en The Rabbit Hole 🐇
Subscribe to my newsletter
Read articles from Dan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
