尝试创建多个私有DNS区域
博士
只有当is_nonprod设置为1.强调文本(布尔值)时,才应该创建资源。思想是在资源块中使用两次计数:一次用于布尔值,一次用于长度函数。
resource "azurerm_private_dns_zone" "example" {
count = var.is_nonprod ? 1 : 0 && length(var.env)
name = var.env[count.index].npr
resource_group_name = "examplerg"
}可变文件:
variable "env" {
description = "List of routes to be added to the route table"
default = []
type = list(map(any))
}
variable "is_nonprod " {
default = true
}塔夫瓦
env = [
{ npr = "qa" },
{ npr = "uat" },
{ npr = "dev" }
]错误:真假结果表达式必须具有一致的类型。给出的表达式分别是数字和bool。
解决办法:
resource "azurerm_private_dns_zone" "example" {
count = var.is_nonprod ? 1 : 0
count = length(var.env)
name = var.env[count.index].npr
resource_group_name = "examplerg"
}错误:参数"count“已经设置为main.tf:96,3-8。每个参数只能设置一次。
发布于 2021-05-21 15:49:33
基于您在问题中描述的内容,var.is_nonprod ? 1 : 0 && length(var.env)看起来不像您在这里想要的逻辑。您似乎非常想要var.is_nonprod ? length(var.env) : 0,它在语法上也是有效的。&&运算符输入并返回布尔值,而布尔值作为count元参数的输入类型无效。count接受一个数字作为输入(通常是要管理的资源数量),而不是true或false。
发布于 2021-05-21 17:02:04
似乎是数据类型冲突。您可以直接使用count = var.is_nonprod ? length(var.env) : 0,它应该会给出预期的结果。
https://stackoverflow.com/questions/67639489
复制相似问题