Creación de Módulos en Terraform para Gestión de Infraestructura

Clase 25 de 37Curso de Terraform

Resumen

¿Cómo manejar scripts de Terraform extensos con módulos?

Desplegar una arquitectura completa con Terraform puede resultar en scripts masivos de miles de líneas de código. ¿La solución? Fragmentar el script en módulos, al igual que utilizamos clases en programación para organizar el código de manera estructurada.

¿Cómo se organiza un script en módulos?

Lo primero que debes establecer es una carpeta específica para los módulos dentro de tu entorno de trabajo, como VS Code. Aquí está cómo puedes hacerlo:

  1. Crear carpetas para cada componente: Por ejemplo, puedes organizar tus componentes en carpetas como VNet para la red virtual, NSG para el grupo de seguridad de red, y VM para la máquina virtual.

  2. Establecer archivos principales: En cada carpeta de módulo, necesitarás tres archivos fundamentales:

    • main.tf: este archivo contendrá el código específico del módulo.
    • variables.tf: donde definirás las variables que el módulo necesita.
    • output.tf: para especificar qué datos se exportarán de este módulo.

¿Cómo se trasladan recursos a un módulo?

El contenido original del script principal se traslada a estos archivos modulares. Por ejemplo:

resource "azurerm_virtual_network" "example" {
  name = "example-network"
  # Otros parámetros aquí...
}

Este bloque de código se trasladaría al main.tf dentro de la carpeta VNet.

¿Qué se debe considerar al trabajar con variables en módulos?

Al trasladar recursos a módulos separados, es importante redefinir las variables en cada módulo específico. Así puedes mantener la independencia de cada pieza del código:

  • Variables deben ser definidas claramente en variables.tf.
  • Dentro de main.tf de cada módulo, utiliza estas variables para referenciar atributos necesarios.

Por ejemplo, si un recurso requiere la ubicación, se definiría como:

variable "location" {
  description = "La ubicación del recurso"
  type        = string
}

¿Cómo asegurar que los módulos funcionen conjuntamente?

Una vez que todos los componentes estén definidos en sus respectivos módulos, es crucial enlazar las variables adecuadamente al script principal de Terraform. Esto significa asegurarte de que cada módulo pueda comunicarse con los demás mediante variables de entrada y salida bien configuradas.

  1. Exportar datos desde módulos: Utiliza el output.tf para especificar qué información debe estar disponible para otros módulos o el script principal.

  2. Definir dependencias claramente: Asegúrate de que las variables y outputs se pasen entre módulos según lo necesites, asegurando que los recursos como subredes, IPs públicas, y grupos de seguridad estén correctamente referidos y accesibles donde se requiera.

Beneficios de usar módulos en Terraform

El esfuerzo de fragmentar y modular los scripts ofrece numerosas ventajas:

  • Escalabilidad: Manejar y escalar proyectos se vuelve más sencillo con un código más organizado y fragmentado.
  • Reutilización: Módulos bien diseñados pueden ser reutilizados en diferentes proyectos.
  • Mantenibilidad: Actualizaciones y mantenimiento se realizan con mayor facilidad evitando confusiones en extensos scripts.

Adoptar esta práctica en tus proyectos de Terraform te guiará al desarrollo más eficiente y a un despliegue más ágil de infraestructuras complejas.