VAVAConsultor Cloud
← Volver al blog
Terraform para PyMEs: Infraestructura sin errores
IaC

Terraform para PyMEs: Infraestructura sin errores

Guía práctica de Terraform para pequeñas empresas. De cero a IaC en 2 semanas.

10 min de lectura

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

  1. Usa variables para valores dinámicos

    variable "machine_type" {
      default = "n1-standard-1"
    }
    
  2. Guarda estado en Cloud Storage (no en local)

    terraform {
      backend "gcs" {
        bucket = "my-tf-state"
        prefix = "terraform/state"
      }
    }
    
  3. Versionea .tfvars con valores reales en secrets manager

    # .gitignore
    terraform.tfvars
    
  4. 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.

¿Tienes dudas? Escríbeme

Hablar por WhatsApp