Comunicación entre Módulos en Terraform para Desplegar Máquinas Virtuales
Clase 26 de 37 • Curso de Terraform
Resumen
¿Cómo comunicar módulos en Terraform para desplegar una máquina virtual?
Terraform facilita la autogestión de infraestructuras en la nube. Sin embargo, al crear múltiples módulos, es fundamental garantizar que los componentes puedan comunicarse entre sí. En este artículo, te mostraremos cómo compartir propiedades entre módulos en Terraform, especialmente cuando despliegas una máquina virtual. Este proceso optimiza tu infraestructura y te ayuda a gestionar recursos de manera eficiente.
¿Cómo extraer valores de salida de un módulo?
Para compartir variables entre módulos, necesitas definir valores de salida en Terraform. Los valores de salida permiten que los datos de un módulo estén disponibles para otros módulos. Aquí te explicamos cómo hacerlo a través de un ejemplo de implementación:
- Crear archivos de salida: Dentro del directorio del módulo de red (bnet), crea un archivo para definir los valores de salida. Por ejemplo:
output "subnet_id" {
value = azurerm_subnet.example.id
}
output "public_ip_address_id" {
value = azurerm_public_ip.example.id
}
- Exportar el ID del grupo de seguridad de red: Si necesitas utilizar el ID de un grupo de seguridad de red desde otro módulo, repite el procedimiento en el módulo correspondiente:
output "network_security_group_id" {
value = azurerm_network_security_group.example.id
}
¿Cómo integrar los módulos en el archivo principal?
Después de definir los valores de salida, nuestro siguiente paso es integrar esos módulos en el archivo main.tf
. Aquí te mostramos cómo hacerlo:
- Referenciar el módulo de red:
module "vnet" {
source = "./vnet"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
- Incorporar el módulo del grupo de seguridad de red (NSG):
module "nsg" {
source = "./nsg"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
}
- Conectar el módulo de máquina virtual:
module "vm" {
source = "./vm"
location = azurerm_resource_group.example.location
resource_group_name = azurerm_resource_group.example.name
vm_username = var.vm_username
vm_password = var.vm_password
subnet_id = module.vnet.subnet_id
public_ip_address_id = module.vnet.public_ip_address_id
network_security_group_id = module.nsg.network_security_group_id
}
¿Cómo validar y aplicar la infraestructura en Terraform?
Después de haber configurado y conectado todos los módulos necesarios, debes validar los cambios y aplicarlos. Sigue estos pasos para garantizar que tu infraestructura se implemente correctamente:
-
Inicializar los módulos:
Usa el comando
terraform init
para descargar e instalar los módulos y configuraciones necesarias. -
Planificar la infraestructura:
Ejecuta
terraform plan -out=plan.out
para revisar los componentes que se crearán, modificando la infraestructura. -
Formatear código:
Asegúrate de mantener tu código estructurado mediante
terraform fmt --recursive
. -
Aplicar cambios:
Ejecuta
terraform apply plan.out
para desplegar los recursos descritos en tu plan. -
Verificar la implementación:
Revisa el portal de Azure para confirmar que los recursos se han desplegado correctamente. Descarga el archivo RDP y realiza las pruebas necesarias.
-
Limpiar recursos:
Cuando hayas terminado las pruebas, usa
terraform destroy
para eliminar los recursos y evitar costos adicionales en tu suscripción de Azure.
La gestión eficiente de infraestructuras con múltiples módulos en Terraform te permite no solo reducir la duplicidad de código sino también mantener un entorno limpio y organizado. Continúa explorando las posibilidades de Terraform y optimiza aún más tus implementaciones en la nube. ¡Mucho éxito!