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

DanDan
2 min read

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érminoQué es
ProviderDefine qué plataforma estás gestionando (AWS, GCP, Azure...)
ResourceEs la unidad de infraestructura: una instancia, un bucket, etc.
ModuleConjunto reutilizable de recursos
StateArchivo que guarda la representación actual de tu infraestructura
BackendDó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 y checkov 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 🐇

0
Subscribe to my newsletter

Read articles from Dan directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Dan
Dan