Sabes crear y conectar módulos (subcapítulos 18.1 y 18.2). Ahora una pregunta práctica: ¿tienes que escribir todos tus módulos desde cero? La respuesta es no. Existen módulos que tú creas (locales) y módulos públicos ya hechos que puedes usar directamente desde el Terraform Registry. Saber cuándo usar cada uno te ahorrará muchísimo trabajo.

Las dos fuentes de módulos

Recuerda que al llamar a un módulo indicas su source (de dónde sale, subcapítulo 18.2). Ese origen puede ser de varios tipos:

Módulos LOCALES        →  los creas tú, en tu propio proyecto o repositorio
Módulos del REGISTRY   →  públicos, ya hechos por la comunidad o HashiCorp

Veamos cada uno.

Módulos locales: los que tú creas

Un módulo local es uno que escribes tú, guardado en tu propio proyecto o en un repositorio de tu empresa. Lo referencias con una ruta de carpeta:

module "mi_red" {
  source = "./modulos/vpc"     # ruta local: una carpeta de tu proyecto
  # ...
}

Cuándo usar módulos locales:

  • Cuando encapsulas lógica específica de tu empresa o proyecto (tus convenciones de seguridad, tu forma de nombrar, tus requisitos concretos).
  • Cuando quieres control total sobre el código.
  • Para módulos internos que compartes entre los proyectos de tu organización (a menudo guardados en un repositorio Git común, que veremos en el subcapítulo 18.4).

Módulos del Terraform Registry: los ya hechos

El Terraform Registry es un catálogo público de módulos ya construidos, mantenidos por HashiCorp, AWS y la comunidad. Son módulos para tareas comunes (crear una VPC, un cluster, una base de datos...) hechos por expertos, probados por miles de personas y listos para usar. Los referencias por su nombre en el registro:

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"   # del Registry
  version = "5.0.0"

  name = "mi-vpc"
  cidr = "10.0.0.0/16"
  # ... el módulo admite muchísimas opciones ...
}

El módulo terraform-aws-modules/vpc/aws es uno de los más usados del mundo: crea una VPC completa con todas las buenas prácticas, y lo mantiene una comunidad enorme. En vez de escribir cientos de líneas, lo usas con unas pocas.

Cuándo usar módulos del Registry:

  • Para infraestructura común y estándar (VPCs, clusters, bases de datos) donde no necesitas nada especial.
  • Para ahorrar tiempo y aprovechar el trabajo de expertos.
  • Para beneficiarte de módulos probados por miles de usuarios, que cubren casos límite que tú quizá no habrías previsto.

Analogía: los módulos locales son como cocinar tu propia receta (control total, adaptada a tu gusto); los del Registry son como usar un producto de calidad ya preparado de una marca de confianza (rápido, fiable, hecho por expertos). A veces cocinas, a veces compras hecho; lo bueno es saber cuándo conviene cada cosa.

Tabla comparativa

Módulos locales Módulos del Registry
Quién los hace Tú / tu empresa HashiCorp, AWS, la comunidad
Control Total El que exponga el módulo
Esfuerzo Hay que escribirlos Listos para usar
Personalización Máxima (lógica propia) La que permitan sus variables
Ideal para Lógica específica de tu negocio Infraestructura común y estándar

Una precaución importante: la confianza

Al usar módulos públicos, recuerda la seguridad: estás incorporando código de terceros a tu infraestructura. Buenas prácticas:

  • Usa módulos de fuentes fiables y verificadas (los «verified» del Registry, o los oficiales de AWS/HashiCorp).
  • Fija siempre la versión (version = "5.0.0"), como en el ejemplo. Esto evita que una actualización inesperada del módulo cambie tu infraestructura sin avisar (lo veremos en el subcapítulo 18.4).
  • Revisa qué hace el módulo antes de usarlo en producción. No metas código desconocido a ciegas.

⚠️ Atención a la inyección de confianza: un módulo malicioso podría crear recursos no deseados o exponer datos. Por eso, igual que con las dependencias de software, usa solo fuentes de confianza y fija versiones.

La estrategia híbrida (lo habitual en la práctica)

En la realidad, los equipos combinan ambos enfoques:

Para lo común y estándar  →  módulos del Registry (VPC, clusters...)
Para tu lógica específica  →  módulos locales propios
A veces:  un módulo local tuyo que USA dentro un módulo del Registry

Por ejemplo, creas un módulo local red-empresa que internamente usa el módulo de VPC del Registry, pero le añade tus reglas de seguridad y convenciones. Así aprovechas lo mejor de ambos: la solidez del módulo público y la personalización de tu lógica.

Lo que debes recordar

  • No tienes que escribir todos los módulos desde cero: existen módulos locales (los creas tú) y módulos del Terraform Registry (públicos, ya hechos).
  • Módulos locales (source = "./ruta"): para tu lógica específica de empresa/proyecto, con control total.
  • Módulos del Registry (source = "terraform-aws-modules/..."): para infraestructura común y estándar, hechos por expertos y probados por miles; ahorran muchísimo tiempo.
  • Seguridad: usa solo fuentes fiables, fija siempre la versión y revisa el código antes de usarlo en producción (es código de terceros en tu infraestructura).
  • En la práctica se combinan: módulos del Registry para lo común, módulos locales para lo propio, a veces unos dentro de otros.

En el siguiente subcapítulo veremos algo crucial para usar módulos de forma segura en equipo: el versionado de módulos con Git tags.

Cloud, AWS & Terraform — De cero a experto

Capítulo 1 · Qué es el cloud computing

Capítulo 2 · El mercado cloud y los grandes proveedores

Capítulo 3 · Regiones, zonas de disponibilidad y edge

Capítulo 4 · Cómputo: EC2

Capítulo 5 · Almacenamiento: S3

Capítulo 6 · Redes: VPC

Capítulo 7 · Identidad y acceso: IAM

Capítulo 8 · Bases de datos gestionadas

Capítulo 9 · Por qué Infraestructura como Código

Capítulo 10 · HCL: el lenguaje de Terraform

Capítulo 11 · Providers y estado

Capítulo 12 · Tu primera infraestructura real en Terraform

Capítulo 13 · Balanceo de carga y autoescalado

Capítulo 14 · Serverless con Lambda

Capítulo 15 · Mensajería y eventos

Capítulo 16 · Entrega de contenido y DNS

Capítulo 17 · Contenedores en AWS

Capítulo 18 · Módulos: reutilización y composición

Capítulo 19 · Workspaces y gestión de entornos

Capítulo 20 · Backends remotos y locking

Capítulo 21 · Testing de infraestructura

Capítulo 22 · Terraform en CI/CD

Capítulo 23 · Seguridad en profundidad

Capítulo 24 · Observabilidad: logs, métricas y trazas

Capítulo 25 · Optimización de costes

Capítulo 26 · Alta disponibilidad y disaster recovery

Capítulo 27 · Well-Architected Framework de AWS

Capítulo 28 · Arquitecturas serverless a escala

Capítulo 29 · Plataformas de datos en AWS

Capítulo 30 · Multi-cuenta y landing zones

Capítulo 31 · Platform Engineering e Internal Developer Platform

Capítulo 32 · Certificaciones AWS relevantes

Capítulo 33 · Proyectos para consolidar lo aprendido

Capítulo 34 · Recursos y comunidad

© Copyright 2024. Todos los derechos reservados