#terraform #terraform0.12
#terraform #terraform0.12
Вопрос:
variables.tf
variable "teams" {
type = map(any)
default = {}
}
входное значение:
teams = {
{
team_id = "abc"
role_names = ["owner"]
},
{
team_id = "bcd"
role_names = ["read", "write"]
}
}
}
main.tf:
resource "mongodbatlas_project" "project" {
name = "testing"
org_id = "123456"
dynamic "teams" {
for_each = var.teams
content {
id = teams.value.team_id
names = [teams.value.role_names]
}
}
}
Я пробовал приведенный выше код, и он не работает. Есть ли более простой способ присвоить переменной значение вложенной команды?
Ответ №1:
teams
Переменная не кажется мне правильной, и есть синтаксические ошибки (например, extra }
в teams
). Я думаю, что это должно быть list
, а не map
:
variable "teams" {
type = list(any)
default = []
}
и затем
teams = [
{
team_id = "abc"
role_names = ["owner"]
},
{
team_id = "bcd"
role_names = ["read", "write"]
}
]
Тогда ваш ресурс может быть:
resource "mongodbatlas_project" "project" {
name = "testing"
org_id = "123456"
dynamic "teams" {
for_each = toset(var.teams)
content {
id = teams.value.team_id
names = teams.value.role_names
}
}
}
При использовании динамических блоков итератор вызывается так же, как имя блока.