首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于map中值的表达式For_each循环

基于map中值的表达式For_each循环
EN

Stack Overflow用户
提问于 2022-02-16 18:38:56
回答 1查看 1.1K关注 0票数 2

由于标题描述不够,让我介绍一下我的问题。我正在为CDN创建包含配置文件/端点/定制域的干模块代码。变量cdn_config将保存所有必要的/可选的参数,这些参数是基于for_each循环创建的。

变量如下所示:

代码语言:javascript
复制
variable "cdn_config" {
  profiles = {
    "profile_1" = {}
 }
 
 endpoints = {
    "endpoint_1" = {
       custom_domain = {
    }
  }
 }
}

这个模块的核心是工作的--它将创建cdn_profile "profile_1“,然后将cdn_endpoint "endpoint_1”创建并分配到此配置文件中,然后创建cdn_custom_domain并将其分配给"endpoint_1“,因为它是"endpoint_1”映射的一部分。

然后我意识到,如果我只想创建"cdn_custom_domain“并手动指定资源ID,该怎么办?

我认为添加可选参数“独立”可能会有所帮助,因此如下所示:

代码语言:javascript
复制
variable "cdn_config" {
  profiles = {
    "profile_1" = {}
 }

 endpoints = {
    "endpoint_1" = {
       custom_domain = {
    }
  }
    "endpoint_standalone" = {
       custom_domain = {
         standalone = true
         cdn_endpoint_id = "xxxxx"
   }
  } 
 }
}

在创建endpoint_standalone资源时,应该完全忽略这个“独立”参数eq真正的“azurerm_cdn_endpoint”映射。

到目前为止,这个方向是我唯一的猜测,很明显,它不起作用--如果我添加"endpoint_standalone“,它会抱怨没有指定所有必需的参数,所以它肯定会找到它。

代码语言:javascript
复制
resource "azurerm_cdn_endpoint" "this" {

for_each = {for k in keys(var.cdn_config.endpoints) : k => var.cdn_config.endpoints[k] if lookup(var.cdn_config.endpoints[k],"standalone",null) != "true"}

如果你能找到解决这个问题的办法,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-16 20:21:54

您正在将bool类型与字符串类型进行比较,因此逻辑比较总是返回false:

代码语言:javascript
复制
for_each = {for k in keys(var.cdn_config.endpoints) : k => var.cdn_config.endpoints[k] if lookup(var.cdn_config.endpoints[k],"standalone",null) != true }

在这里,我们还可以改进这个for表达式:

代码语言:javascript
复制
for_each = { for endpoint, params in var.cdn_config.endpoints : endpoint => params if lookup(params.custom_domain, "standalone", null) != true }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71147530

复制
相关文章

相似问题

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