首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >terraform计数指数和长度

terraform计数指数和长度
EN

Stack Overflow用户
提问于 2021-05-21 15:09:09
回答 2查看 1.7K关注 0票数 0

尝试创建多个私有DNS区域

  1. non > Dev,QA,UAT.
  2. prod ->珠三角,

博士

只有当is_nonprod设置为1.强调文本(布尔值)时,才应该创建资源。思想是在资源块中使用两次计数:一次用于布尔值,一次用于长度函数。

代码语言:javascript
复制
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"
    }

可变文件:

代码语言:javascript
复制
variable "env" {
  description = "List of routes to be added to the route table"
  default     = []
  type        = list(map(any))
}

variable "is_nonprod " {
    default = true
}

塔夫瓦

代码语言:javascript
复制
env = [
  { npr = "qa" },
  { npr = "uat" },
  { npr = "dev" }
]

错误:真假结果表达式必须具有一致的类型。给出的表达式分别是数字和bool。

解决办法:

代码语言:javascript
复制
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。每个参数只能设置一次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-21 15:49:33

基于您在问题中描述的内容,var.is_nonprod ? 1 : 0 && length(var.env)看起来不像您在这里想要的逻辑。您似乎非常想要var.is_nonprod ? length(var.env) : 0,它在语法上也是有效的。&&运算符输入并返回布尔值,而布尔值作为count元参数的输入类型无效。count接受一个数字作为输入(通常是要管理的资源数量),而不是truefalse

票数 3
EN

Stack Overflow用户

发布于 2021-05-21 17:02:04

似乎是数据类型冲突。您可以直接使用count = var.is_nonprod ? length(var.env) : 0,它应该会给出预期的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67639489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档