Beginner

Curso Completo de OpenTofu: De Cero a DevOps Engineer 5/6

Overview
Curriculum
  • 1 Section
  • 1 Lesson
  • 1 Quiz
  • 1h Duration
Collapse All
Quiz and gradebook sections
1 Lesson1 Quiz

Capítulo 5: Construcción de Módulos Reutilizables

1. Introducción

Escribir todo el código en un único archivo es insostenible. Los módulos son contenedores para múltiples recursos que se usan juntos. Te permiten empaquetar piezas de infraestructura para que otros miembros del equipo puedan usarlas fácilmente sin conocer los detalles de implementación internos.

2. Definición y Explicación

Un módulo es simplemente cualquier directorio que contenga archivos .tf o .tofu.
  • Módulo Raíz (Root Module): El directorio principal donde ejecutas tofu apply.
  • Módulo Hijo (Child Module): Un directorio externo o interno que es llamado por el módulo raíz mediante el bloque module.
  • Las variables del módulo hijo actúan como sus argumentos de entrada. Los outputs del módulo hijo actúan como los atributos de salida legibles por el módulo raíz.

3. Ejemplo

Estructura de archivos requerida:
text
├── main.tofu (Raíz)
└── modulos/
    └── creador_archivos/
        ├── main.tofu
        ├── variables.tofu
        └── outputs.tofu
Usa el código con precaución.
 

Código del Módulo Hijo (modulos/creador_archivos/main.tofu):
hcl
variable "nombre_proyecto" { type = string }
variable "es_critico"      { type = bool; default = false }

resource "local_file" "archivo_modulo" {
  filename = "${path.module}/../../proyecto_${var.nombre_proyecto}.log"
  content  = "Proyecto: ${var.nombre_proyecto}\nCriticidad Alta: ${var.es_critico}"
}

output "ruta_completa" {
  value = local_file.archivo_modulo.filename
}
Usa el código con precaución.
 

Código del Módulo Raíz (main.tofu en la raíz):
hcl
module "proyecto_alfa" {
  source          = "./modulos/creador_archivos"
  nombre_proyecto = "alfa"
  es_critico      = true
}

module "proyecto_beta" {
  source          = "./modulos/creador_archivos"
  nombre_proyecto = "beta"
}

output "resultado_alfa" {
  value = module.proyecto_alfa.ruta_completa
}
Usa el código con precaución.
 

4. Buenas Prácticas

  • Mantén los módulos agnósticos: No metas variables de entorno específicas de producción o desarrollo dentro del módulo hijo. Pásalas siempre como variables desde el módulo raíz.
  • Usa versionamiento de módulos: Cuando subas módulos a repositorios compartidos (como GitHub), llámalos usando etiquetas de versión (?ref=v1.0.0) para dar estabilidad.

5. Ejercicios de Prueba

  1. Crea la estructura de carpetas indicada arriba en tu computadora y rellena los archivos con el código del ejemplo.
  2. Ejecuta tofu init. Verás que OpenTofu detecta y "registra" los módulos locales.
  3. Ejecuta tofu apply y verifica que ambos proyectos se gestionen correctamente de manera aislada utilizando la plantilla del módulo hijo.

 

Deleting Course Review

Are you sure? You can't restore this back

Course Access

This course is password protected. To access it please enter your password below:

Related Courses

Curso Completo de OpenTofu: De Cero a DevOps Engineer 6/6

Test Your Knowledge with Engaging Quizzes

Prepare with Real Exam Experience

Track Progress with an Intelligent Gradebook

1h
2

Curso Completo de OpenTofu: De Cero a DevOps Engineer 4/6

Test Your Knowledge with Engaging Quizzes

Prepare with Real Exam Experience

Track Progress with an Intelligent Gradebook

1h
2

Curso Completo de OpenTofu: De Cero a DevOps Engineer 3/6

Test Your Knowledge with Engaging Quizzes

Prepare with Real Exam Experience

Track Progress with an Intelligent Gradebook

1h
2
Scroll hacia arriba