在variables.tf中有一个列表变量“ test”。我正在尝试在我的zone.tf中使用此列表变量。
实际上我不想使用列表索引,我想运行一个循环以动态地从列表变量获取列表的所有值。我怎样才能做到这一点?非常感谢您的帮助。
我尝试在资源资源“ aws_route53_record”内部的test.tf中使用count,但是它创建了多个不需要的记录集,因为我只需要一个包含多个记录的记录集
resource "aws_route53_record" "test" {
zone_id = "${data.aws_route53_zone.dns.zone_id}"
name = "${lower(var.environment)}xyz"
type = "CAA"
ttl = 300
count = "${length(var.test)}"
records = [
"0 issue \"${element(var.test, count.index)}\"",
]
}
variables.tf:-
variable "test" {
type = "list"
default = ["godaddy.com", "Namecheap.org"]
}
zone.tf :-
resource "aws_route53_record" "test" {
zone_id = "${data.aws_route53_zone.dns.zone_id}"
name = "${lower(var.environment)}xyz"
type = "CAA"
ttl = 300
records = [
"0 issue \"${var.test[0]}\"",
"0 issue \"${var.test[1]}\"",
]
}
期望获得包含两个记录的一个记录集。
实际:-获得具有两个记录的两个记录集。
答案 0 :(得分:0)
因此,如果我理解正确,您想将两个记录与您的区域相关联,但是现在使用count时,您将获得两个包含一个记录的区域。
这是因为通过指定县地形,将创建其count属性等于count数量的资源。
从根本上讲,问题是,现在您有了一个列表变量,并试图通过提取列表中的每个元素以将元素逐个放回list属性中,从而将其传递到期望的列表位置。
与其进行额外的工作,不如通过一个简单的解决方案,只需将字符串的其他部分(变量“ 0 issue”)添加到变量的定义中,然后将整个列表对象传递如下,< / p>
variable "test" {
type = "list"
default = ["0 issue godaddy.com", "0 issue Namecheap.org"]
}
zone.tf :-
resource "aws_route53_record" "test" {
zone_id = "${data.aws_route53_zone.dns.zone_id}"
name = "${lower(var.environment)}xyz"
type = "CAA"
ttl = 300
records = ["${var.test}"]
}
然后这将传递该属性的列表,terraform将负责列表的编组,解组和处理。我希望这回答了你的问题。