我有以下变量
variable "whitelisted_ips" {
default = "xx.xxx.xx.x/21,xxx.xx.xxx.x/20"
}
在一些需要使用CIDRS列表的地方使用以下
cidr_blocks = ["${split(",", var.whitelisted_ips)}"]
一切正常。
我想重用这些值,并得到以下结构(表示为JSON以使您有所了解)
waf_ips = [
{ value = "xx.xxx.xx.x/21", type="IPV4"},
{ value = "xxx.xx.xxx.x/20", type="IPV4"},
]
所以我想从字符串创建一个地图列表(IPV4是硬编码的,并在每一行重复)。
如果我将当前的JSON馈送到aws_waf_rule并将其视为列表,则它会成功,但是我宁愿不重复tfvars文件中的数据,因为它是相同的,并且我想重用该字符串分隔的列表。
答案 0 :(得分:0)
好吧,了解了更多的知识之后,事实证明您可以使用用于静态数据的空资源来做到这一点。
locals {
cidr_blocks = ["xxx.xxx.xxx/23", "xxx.xxx.xxx/23", "xxx.xxx.xxx/23"]
}
resource "null_resource" "cidr_map_to_protocol" {
count = "${length(local.cidr_blocks)}"
triggers {
value = "${element(local.cidr_blocks, count.index)}"
type = "IPV4"
}
}
output "mapped_cidr_to_protocol" {
value = "${null_resource.cidr_map_to_protocol.*.triggers}"
}
不幸的是,这不适用于计算资源。