我正在嘗試創建多個資料工廠鏈接服務,一個用于帳戶內的每個資料庫。
變數.tf
variable "cosmosdbs" {
type = any
}
變數.tfvars
cosmosdbs = [
{
name = "account1"
resource_group = "group-name1"
databases = ["database"]
},
{
name = "account2"
resource_group = "group-name2"
databases = ["database1","database2","database3"]
}
]
主檔案
data "azurerm_cosmosdb_account" "cosmosdbs" {
for_each = {for r in var.cosmosdbs: r.name => r}
name = each.key
resource_group_name = each.value.resource_group
}
module "linked_cosmosdbs" {
source = "../"
for_each = {for r in var.cosmosdbs: r.name => r}
name = each.value.databases
resource_group_name = module.rg.name
data_factory_id = module.adf.id
description = "Connection to CosmosDB (Terraformed)"
integration_runtime_name = local.resource_name
account_endpoint = data.azurerm_cosmosdb_account.cosmosdbs[each.key].endpoint
account_key = data.azurerm_cosmosdb_account.cosmosdbs[each.key].primary_key
database = each.value.databases
}
顯然這是行不通的,因為我想遍歷元組內的每個映射,并為每個資料庫創建一個屬于每個帳戶的鏈接服務。
uj5u.com熱心網友回復:
您必須展平變數,例如:
locals {
cosmosdbs_flat = merge([
for val in var.cosmosdbs: {
for database in val["databases"]:
"${val.name}-${database}" => {
name = val.name
resource_group = val.resource_group
database = database
}
}
]...) # please do NOT remove the dots
}
然后
module "linked_cosmosdbs" {
source = "../"
for_each = local.cosmosdbs_flat
name = each.value.database
resource_group_name = module.rg.name
data_factory_id = module.adf.id
description = "Connection to CosmosDB (Terraformed)"
integration_runtime_name = local.resource_name
account_endpoint = data.azurerm_cosmosdb_account.cosmosdbs[each.value.name].endpoint
account_key = data.azurerm_cosmosdb_account.cosmosdbs[each.value.name].primary_key
database = each.value.database
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441694.html
