下面的局部变量文件中有资源组的名称和每个环境的标记映射
locals{
identity-rgs = ["prod-dc", "prod-okta", "dev-dc", "dev-okta"]
prod_okta_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Prod"
"Product" = "Okta"
}
dev_okta_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "Okta"
}
dev_dc_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "DC"
}
prod_dc_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "DC"
}Main.tf -从本地文件创建Azure资源组
resource "azurerm_resource_group" "identity-rgs" {
count = length(local.ind-identity-rgs)
name = local.ind-identity-rgs[count.index]
location = ....
tags = 在遍历列表时,如何动态地为每个资源组分配标记?
例如,标识-rgs应该有prod_dc_tags和标识-rgs 2应该有dev_dc标记?
我正在尝试一个如果其他的条件,但无法使它工作
tags = "${local.identity-rgs == "prod-dc" ? local.prod_dc_tags:0}"资源"azurerm_resource_group“中的”标识-rgs“:│297:││= "${local.identity-rgs ==”prod?local.prod_dc_tags:0}“rgs是一个元组,包含4个元素,local.prod_dc_tags是具有10个属性的对象,││的真假结果表达式必须具有一致的类型。给定的表达式分别是对象和数字。
这也可以通过动态块来完成吗?
发布于 2022-05-21 04:42:11
你不能用你正在尝试的方式去做。最简单的方法是重新定义你的本地人:
locals{
identity-rgs = ["prod-dc", "prod-okta", "dev-dc", "dev-okta"]
tags = {
prod_okta = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Prod"
"Product" = "Okta"
},
dev_okta_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "Okta"
},
dev_dc_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "DC"
},
prod_dc_tags = {
"Key1" = "Value1"
"Key2" = "Value2"
"Environment" = "Dev"
"Product" = "DC"
}
}然后,使用for_each (它比count更好,因为它不依赖于项目的顺序):
resource "azurerm_resource_group" "identity-rgs" {
for_each = toset(local.ind-identity-rgs)
tags = local.tags[each.key]
}https://stackoverflow.com/questions/72320447
复制相似问题