由于标题描述不够,让我介绍一下我的问题。我正在为CDN创建包含配置文件/端点/定制域的干模块代码。变量cdn_config将保存所有必要的/可选的参数,这些参数是基于for_each循环创建的。
变量如下所示:
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,该怎么办?
我认为添加可选参数“独立”可能会有所帮助,因此如下所示:
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“,它会抱怨没有指定所有必需的参数,所以它肯定会找到它。
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"}如果你能找到解决这个问题的办法,我将不胜感激。
发布于 2022-02-16 20:21:54
您正在将bool类型与字符串类型进行比较,因此逻辑比较总是返回false:
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表达式:
for_each = { for endpoint, params in var.cdn_config.endpoints : endpoint => params if lookup(params.custom_domain, "standalone", null) != true }https://stackoverflow.com/questions/71147530
复制相似问题