#terraform #cisco
Вопрос:
Мне нужно повторить список значений из карты объектов в цикле for_each, но я, похоже, не могу получить необходимые данные в формате, необходимом для ресурса (строка). Я получаю недопустимые ошибки аргумента for_each: Данное значение аргумента «for_each» не подходит: аргумент «for_each» должен быть картой или набором строк, и вы указали значение типа кортеж. Однако мои местные жители предоставляют ожидаемые данные.
Как я могу преобразовать эти данные в то, что может принять for_each?
> local.domain
[
{
"domain" = "NonProd_Compute-AEP-mktest"
"epg" = "BTS_NonProd_Database_Svc_10.8.0.0-mktest"
},
{
"domain" = "Prod_Compute-AEP-mktest"
"epg" = "BTS_NonProd_Database_Svc_10.8.0.0-mktest"
},
{
"domain" = "Prod_Network-PhyDom-mktest"
"epg" = "BTS_NonProd_Database_Svc_10.8.0.0-mktest"
},
]
блок ресурсов:
locals {
domains = toset(flatten([
for epg, value in var.epgtodom_map : [
for domain in value["domains"] : {
epg = epg
domain = domain
}
]
]))
}
resource "aci_epg_to_domain" "epgtodomLocalName" {
for_each = local.domain
application_epg_dn = aci_application_epg.epgLocalName[each.value["epg"]].id
tdn = "uni/phys-${each.value["domain"]}"
}
переменные:
variable "epgtodom_map" {
type = map(object({
domains = set(string)
}))
}
tfvars:
epg_map = {
"BTS_NonProd_Database_Svc_10.8.0.0-mktest" = {
name_alias = "10.8.0.0_24_VL2000"
ap_key = "NonProd-AP-mktest"
bd_key = "BTS_NonProd_Database_Svc-mktest"
description = ""
}
}
Комментарии:
1. Что такое
epgtodom_map
?