#terraform #terraform-provider-aws
Вопрос:
У меня есть пути в terraform, для которых я хочу подготовить список сопоставлений на основе папки —
Так сказать —
- Безопасность
- Файл1
- Инфраструктура
- Файл2
locals {
paths = {
for ou in var.core_ous : ou => "${path.module}/policies/${lower(ou)}"
}
policies = {
for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
ou = f[0]
file = fileset(lookup(f[1],f[0],""),"*.json")
}
}
}
Но я получаю ошибку, как при попытке создать список путей на основе папки, как —
╷
│ Error: Invalid function argument
│
│ on modules/organizations/locals.tf line 21, in locals:
│ 21: for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
│ ├────────────────
│ │ local.paths is object with 2 attributes
│
│ Invalid value for "sets" parameter: a set or a list is required.
Я проверил вывод paths
, и он идет как —
Changes to Outputs:
files = {
Infrastructure = "modules/organizations/policies/infrastructure"
Security = "modules/organizations/policies/security"
}
как я могу выполнить цикл только на основе var.core_ous, чтобы создать карту, подобную на основе файлов json —
- Безопасность
- путь к файлу 1
- путь к файлу 2
- Инфраструктура
- путь к файлу 3
- путь к файлу 4
а затем выполните этот цикл, чтобы применить его к политике как —
policies = {
for f in setproduct(var.core_ous,local.paths) : "${f[0]}/${f[1]}" => {
ou = f[0]
file = fileset(lookup(f[1],f[0],""),"*.json")
}
}
Как мы можем этого достичь ?
Комментарии:
1. Что такое
var.core_ous
?2. @Marcin Это просто список строк core_ous = [«Безопасность»,»Инфраструктура»], которые совпадают с папками, из которых я пытаюсь вывести файлы json политик для чтения .