Saltar al contenido principal

Día 25 - Módulos en Terraform

📦 Módulos en Terraform​

¡Hoy aprenderemos a crear código reutilizable y modular!
Los módulos son la clave para escribir Terraform mantenible, escalable y DRY (Don't Repeat Yourself).


🧩 ¿Qué son los Módulos?​

Los módulos en Terraform son:

  • 📦 Contenedores de múltiples recursos que se usan juntos
  • 🔄 Componentes reutilizables de infraestructura
  • 🏗️ Abstracciones que simplifican configuraciones complejas
  • 📚 Bibliotecas de mejores prácticas

Tipos de Módulos​

  1. Root Module: El directorio principal donde ejecutas Terraform
  2. Child Modules: Módulos llamados por otros módulos
  3. Published Modules: Módulos compartidos en registros públicos

🏗️ Estructura de un Módulo​

Un módulo típico tiene esta estructura:

modules/
└── webapp/
├── main.tf # Recursos principales
├── variables.tf # Variables de entrada
├── outputs.tf # Valores de salida
├── versions.tf # Requisitos de versión
├── README.md # Documentación
└── examples/ # Ejemplos de uso
└── basic/
├── main.tf
└── variables.tf

🛠️ Creando tu Primer Módulo​

Vamos a crear un módulo para desplegar una aplicación web con Docker:

Estructura del Proyecto​

terraform-modules/
├── modules/
│ └── docker-webapp/
│ ├── main.tf
│ ├── variables.tf
│ ├── outputs.tf
│ └── README.md
├── examples/
│ ├── simple-webapp/
│ └── full-stack/
└── main.tf

modules/docker-webapp/variables.tf​

# ... (contenido igual que antes)

modules/docker-webapp/main.tf​

# ... (contenido igual que antes)

modules/docker-webapp/outputs.tf​

# ... (contenido igual que antes)

🔧 Usando el Módulo​

Uso Básico​

# ... (contenido igual que antes)

Uso Avanzado​

# ... (contenido igual que antes)

📚 Módulos desde el Registry​

Terraform tiene un registro público de módulos:

Usando Módulos Públicos​

# ... (contenido igual que antes)

🔄 Versionado de Módulos​

Usando Versiones Específicas​

# ... (contenido igual que antes)

Constraints de Versión​

# ... (contenido igual que antes)

🏢 Módulos para Equipos​

Estructura Organizacional​

terraform-modules/
├── modules/
│ ├── networking/
│ │ ├── vpc/
│ │ ├── security-groups/
│ │ └── load-balancer/
│ ├── compute/
│ │ ├── webapp/
│ │ ├── database/
│ │ └── cache/
│ └── shared/
│ ├── monitoring/
│ └── logging/
├── examples/
│ ├── dev-environment/
│ └── prod-environment/
└── README.md

Esta estructura permite a los equipos compartir y reutilizar módulos para diferentes propósitos (red, cómputo, almacenamiento, seguridad, etc.), facilitando la colaboración y el mantenimiento.


✅ Buenas Prácticas con Módulos​

  • Documenta cada módulo con un README.md claro.
  • Usa nombres descriptivos para variables y outputs.
  • Versiona tus módulos y usa tags en Git.
  • Mantén los módulos pequeños y enfocados en una sola responsabilidad.
  • Usa validaciones en variables para evitar errores comunes.
  • Proporciona ejemplos de uso en la carpeta examples/.
  • Publica módulos útiles en el Terraform Registry si pueden servir a otros.

📝 Recursos Adicionales​


¡Ahora puedes crear, compartir y reutilizar módulos en Terraform para construir infraestructuras más limpias y escalables! 🚀