多變的:
gateways:
gateway1:
routingConfig:
sslCertificates: [
"a",
"b"
],
## amended for brievity
gateway2:
routingConfig: {}
## amended for brievity
代碼嘗試:
data "azurerm_key_vault_secret" "ssl_certificates" {
for_each = {
for k, v in local.gateways : v.routing_config.ssl_certificates
if v.routing_config != {}
}
name = each.value
key_vault_id = data.azurerm_key_vault.ssl_certificates.id
}
這不起作用,它只為每個網關創建一個迭代并嘗試將元組插入名稱:
each.value 是包含 2 個元素的元組
這是預料之中的,如果你考慮一下,但我不知道如何在回圈中做一個回圈
對于網關,相同的資料結構可以作業,因為我可以對 ssl_certificates 屬性進行動態處理,但我認為我不能在這里這樣做
最終解決方案:
certificates_flat = merge([
for gtw, gtw_details in local.gateways : {
for ssl_cert in gtw_details.routing_config.ssl_certificates :
ssl_cert => ssl_cert
} if gtw_details.routing_config != {}
]...)
data "azurerm_key_vault_secret" "ssl_certificates" {
for_each = local.certificates_flat
name = each.value
key_vault_id = data.azurerm_key_vault.ssl_certificates.id
}
uj5u.com熱心網友回復:
我如何在回圈中做一個回圈
你必須展平你的變數。例如如下:
locals {
gateways_flat = merge([
for gtw, gtw_details in local.gateways: {
for ssl_cert in gtw_details.routing_config.ssl_certificates:
"${gtw}-${ssl_cert}" => {
ssl_certificate = ssl_cert
}
} if gtw_details.routing_config != {}
]...)
}
給予:
{
"gateway1-a" = {
"ssl_certificate" = "a"
}
"gateway1-b" = {
"ssl_certificate" = "b"
}
}
然后
data "azurerm_key_vault_secret" "ssl_certificates" {
for_each = local.gateways_flat
name = each.value.ssl_certificate
key_vault_id = data.azurerm_key_vault.ssl_certificates.id
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537561.html
標籤:天蓝色循环地貌terraform 提供者 azure哈希公司
