En el ámbito de la infraestructura como código, los módulos de Terraform pueden desempeñar un papel importante para hacerle la vida más fácil. A veces, sin embargo, estos módulos no se encuentran en el directorio raíz de su paquete fuente. En cambio, residen en subdirectorios. Afortunadamente, Terraform tiene una forma inteligente de ayudarle a acceder a estos módulos anidados.
Terraform emplea una sintaxis única de doble barra (//) para ayudar a identificar el subdirectorio exacto donde se encuentra el módulo. La ruta que sigue a esta sintaxis de doble barra se considera un subdirectorio dentro del paquete o repositorio.
Aquí hay algunos ejemplos para ilustrar este concepto:
- Usando el módulo Consul en AWS:
hashicorp/consul/aws//modules/consul-cluster - Apuntando a un módulo VPC en un repositorio Git:
git::https://example.com/network.git//modules/vpc - Accediendo a un módulo VPC desde un archivo zip:
https://example.com/network-module.zip//modules/vpc - Recuperar un módulo VPC de un depósito S3:
s3::https://s3-eu-west-1.amazonaws.com/examplecorp-terraform-modules/network.zip//modules/vpc
Ahora, si está trabajando con fuentes de control de versiones y necesita incluir argumentos como ref para especificar una versión en particular, asegúrese de que la ruta del subdirectorio esté antes de estos argumentos. Por ejemplo:
git::https://example.com/network.git//modules/vpc?ref=v1.2.0
Otra cosa a tener en cuenta es que cuando utilice esta función, Terraform descargará el paquete completo a su máquina local. Sin embargo, sólo utilizará el módulo presente en el subdirectorio especificado. Esto también significa que si tiene módulos que interactúan entre sí dentro del mismo paquete, pueden consultarse entre sí de forma segura mediante rutas locales.
Para obtener más información, puede consultar la documentación oficial de Terraform en Modules in Package Subdirectories.
Navegar por subdirectorios puede parecer una característica menor, pero es una herramienta poderosa que le ayuda a mantener su base de código organizada mientras aprovecha los módulos externos de manera efectiva. ¡Feliz codificación!