提问人:Shay Allen 提问时间:8/1/2023 更新时间:8/1/2023 访问量:39
Terraform v1.5.4 动态项在合并选项上失败
Terraform v1.5.4 dynamic items failing on coalesce options
问:
我是 Terraform 的新手。我打算利用本地 yaml 文件作为 Cloudflare 中大量重定向的动态列表的数据源。我可以通过不使用合并默认选项并让 yaml 文件中的每个条目都包含一个值(在本例中为 status_code)来使其工作。但是,我只想在状态代码与 301 默认值不同时输入状态代码。当我设置合并时,它给了我错误:
错误:不支持的属性 此对象没有名为“status_code”的属性。
我认为这是因为它不再在我的 yaml 文件中看到status_code值。有没有办法做到这一点?
这是我 main.tf:
locals {
redirects = yamldecode(file("${path.module}/redirects.yaml"))
}
resource "cloudflare_list" "redirect_list" {
account_id = var.cloudflare_account_id
name = "redirect_list"
description = "List of domains to redirect"
kind = "redirect"
dynamic "item" {
for_each = local.redirects
content {
value {
redirect {
source_url = item.value.source_url
target_url = item.value.target_url
status_code = coalesce(item.value.status_code, 301) # Set default to 301
}
}
}
}
}
这是我的redirects.yaml中的一个示例:
- source_url: "https://support.example.com"
target_url: "https://example.com"
- source_url: "https://help.example.com"
target_url: "https://example.com"
我所期望的是 terraform,使用 coalesce 函数来查看 item.value.status_code 是否存在以及它是否没有将 301 插入其中。就像我之前说的,如果我把status_code钥匙放在那里,这确实有效,但我希望我不必这样做。
答:
1赞
Marcin
8/1/2023
#1
请改用查找:
status_code = lookup(item.value, "status_code", 301)
评论
1赞
Shay Allen
8/1/2023
非常感谢@Marcin!这就像一个魅力。
评论