Terraform para PyMEs: Infraestructura sin errores
Guía práctica de Terraform para pequeñas empresas. De cero a IaC en 2 semanas.
El problema: Infraestructura manual = dolor
Cuando empiezas una startup, creas recursos a través de la consola:
- Red
- Máquina virtual
- Base de datos
- Storage
Problema: 6 meses después, nadie sabe exactamente qué hay desplegado o cómo recrearlo.
Terraform resuelve esto escribiendo tu infraestructura como código.
¿Qué es Terraform?
Terraform es una herramienta que describe tu infraestructura en código (HCL).
Ejemplo:
# main.tf terraform { required_providers { google = { source = "hashicorp/google" version = "~> 5.0" } } } provider "google" { project = "my-project" region = "us-central1" } # Crear una máquina virtual resource "google_compute_instance" "app_server" { name = "app-server" machine_type = "n1-standard-1" zone = "us-central1-a" boot_disk { initialize_params { image = "ubuntu-2204-lts" } } network_interface { network = "default" } } # Crear una base de datos CloudSQL resource "google_sql_database_instance" "postgres" { name = "my-database" database_version = "POSTGRES_15" region = "us-central1" settings { tier = "db-f1-micro" } }
Luego ejecutas:
terraform init # Descargar providers terraform plan # Ver qué va a crear terraform apply # Crear infraestructura
Ventajas:
- ✅ Reproducible (mismo código = misma infraestructura siempre)
- ✅ Versionado (git como control de cambios)
- ✅ Auditable (quién cambió qué y cuándo)
- ✅ Automatizable (CI/CD)
Estructura para PyMEs
Para una pequeña empresa, esta estructura es suficiente:
terraform/
├── main.tf # Recursos principales
├── variables.tf # Variables (entradas)
├── outputs.tf # Salidas útiles
├── terraform.tfvars # Valores (no versionar)
└── .gitignore # Ignorar .tfstate
Paso a paso: Tu primer deploy
1. Instala Terraform
# macOS brew install terraform # Linux wget https://releases.hashicorp.com/terraform/1.7.0/terraform_1.7.0_linux_amd64.zip unzip terraform_1.7.0_linux_amd64.zip sudo mv terraform /usr/local/bin/
2. Crea tu proyecto
mkdir my-infra && cd my-infra
3. Escribe main.tf (ejemplo GCP)
terraform { required_providers { google = { source = "hashicorp/google" version = "~> 5.0" } } } provider "google" { project = "MY_PROJECT_ID" region = "us-central1" } resource "google_compute_instance" "web" { name = "web-server" machine_type = "n1-standard-1" zone = "us-central1-a" boot_disk { initialize_params { image = "ubuntu-2204-lts" } } network_interface { network = "default" access_config {} # IP pública } metadata_startup_script = <<-EOF #!/bin/bash apt-get update apt-get install -y nginx systemctl start nginx EOF } output "web_server_ip" { value = google_compute_instance.web.network_interface[0].access_config[0].nat_ip }
4. Despliega
terraform init terraform plan # Revisa antes terraform apply # Crear
5. Verifica
# Ver outputs terraform output web_server_ip # Cambiar # Edita main.tf y vuelve a terraform apply # Destruir (útil para desarrollo) terraform destroy
Mejores prácticas para PyMEs
-
Usa variables para valores dinámicos
variable "machine_type" { default = "n1-standard-1" } -
Guarda estado en Cloud Storage (no en local)
terraform { backend "gcs" { bucket = "my-tf-state" prefix = "terraform/state" } } -
Versionea .tfvars con valores reales en secrets manager
# .gitignore terraform.tfvars -
Usa Terraform en CI/CD
# GitHub Actions on: [push] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: hashicorp/setup-terraform@v2 - run: terraform apply -auto-approve
Resultado
- Antes: 2 horas manual, riesgo de error
- Después: 30 segundos, reproducible, versionado
¿Quieres ayuda migrando tu infraestructura a Terraform? Agenda una consulta
¿Necesitas ayuda?
Contacta para una auditoría gratis sobre tu infraestructura cloud.