【发布时间】:2020-12-08 15:31:08
【问题描述】:
我希望能够使用 TF Vars 中定义的以下格式创建多个 R53 记录:
custom_zone_records = {
"demo.a.com" = [
{"*.b" = {type: "CNAME", records: ["d.com"]}},
{"*.c" = {type: "CNAME", records: ["d.com"]}}
]
}
以记录为例,应该创建R53记录:
Name: *.b.demo.a.com
Type: CNAME
Records: ["d.com"]
输入变量定义为:
variable "custom_zone_records" {
description = "A map of maps for custom zone records"
type = map(list(map(object({
type = string
records: list(string)
}))))
}
我尝试使用 for_each 在资源创建中更改数组,并尝试使用本地文件进行格式化,但没有成功。
除了让数组更明确之外,还有更好的格式化或处理方法吗?
谢谢。
编辑:
如果我不使用该变量,我将不得不编写以下代码(作为我想要实现的示例)
resource "aws_route53_record" "demo_a" {
zone_id = "ZONE_ID"
name = "*.b.demo.a.com"
type = "CNAME"
records = ["d.com"]
ttl = 60
}
resource "aws_route53_record" "demo_a" {
zone_id = "ZONE_ID"
name = "*.c.demo.a.com"
type = "CNAME"
records = ["d.com"]
ttl = 60
}
【问题讨论】:
-
到目前为止一切顺利,您在将变量传递到 aws_route53_record 方面尝试了什么?你到底卡在哪里了?
-
得到了添加
for_each(循环通过顶层区域,例如demo.a.com)然后尝试添加查找,循环通过值。在那一点上有点卡住了——我们如何(如果可能)循环遍历资源,这个问题很现实。 -
如果您在没有变量的情况下手动创建 N 个资源,它们会是什么样子?给定的例子有多少?如果您需要循环两次(一次用于不同的域,一次用于不同的记录),您可以创建一个循环数据的本地,创建多个嵌套数组,然后将所有内容包装在
flatten调用中,以便您可以然后 for_each在展开的本地上。 -
我已编辑问题以显示手动创建我想要创建的记录。我想你不能给我一点代码,作为一个例子好吗?我想我朝我走的方向走错了树