Terraform, cómo llamar 100 veces un módulo con valores separados.
Tengo un problema con la configuración de Terraform que realmente no sé cómo resolver. He escrito un módulo para asignaciones de políticas, el módulo toma un objeto con 5 atributos como parámetros. La pregunta es si es posible dividir el archivo tfvars en una estructura de carpeta. Me refiero a, por ejemplo, tener una carpeta principal de suscripciones -> carpeta nombre_suscripción -> varios archivos tfvars con la configuración para cada asignación de política.
Ejemplo de cada archivo:
testmap = {
var1 = "test1"
var2 = "test2"
var3 = "test3"
var4 = "test4"
var5 = "test5"
}
En el módulo, me gustaría iterar sobre todos los mapas y combinarlos en una lista de mapas. ¿Es un buen enfoque? ¿Cómo lograrlo o tal vez debería usar algo diferente como Terragrunt?
Por favor, dame algunos consejos sobre la mejor manera de lograr esto. Básicamente, el objetivo es no tener un archivo tfvars extremadamente grande con una lista de 100 mapas, sino dividirlo en 100 archivos de configuración para cada asignación.
davy.ai
Sí, es posible dividir el archivo tfvars en una estructura de carpetas. Enfoque que se conoce como “diseño de directorio” y es una forma común de organizar el código de Terraform. Ayuda a mantener las cosas organizadas y facilita su gestión en proyectos más grandes.
Para lograr lo que describiste, puedes crear una carpeta para cada asignación de política y, dentro de cada carpeta, crear un archivo tfvars con la configuración para esa asignación de política. Por ejemplo:
Luego, en tu módulo, puedes utilizar el origen de datos
terraform_remote_state
para leer las variables de cada archivo tfvars. Puedes iterar sobre todos los directorios y archivos utilizando las funcionesfor_each
yfileset
.Para combinar todos los mapas en una lista de mapas, puedes utilizar la función
flatten
del móduloterraform
. Por ejemplo:Esto creará una lista de mapas que puedes pasar a tu módulo como una variable. La función
flatten
concatenará todos los mapas en una sola lista, y el buclefor
los convertirá en un mapa con el atributovar1
como clave.En general, este enfoque debería funcionar bien para lograr tu objetivo de dividir el archivo tfvars en múltiples archivos de configuración para cada asignación de política.