我有下面的terraform allowed_ips元组,它包含一个ip地址json和每个ip的元数据。我正在尝试将元组扁平化,以获得格式为[”2.2.2.2“,“3.3.3.3“]的ip地址列表,然后将其传递给ip_rules变量
变量
allowed_ips = [
{
name = "ip1"
ip_address = "3.3.3.3"
},
{
name = "ip2"
ip_address = "127.0.0.1"
}
]
资源
variable "allowed_ips" {
type = list(object({
name = string,
priority = string,
ip_address = string
}))
}
network_acls {
default_action = "Deny"
bypass = "AzureServices"
ip_rules = jsonencode(var.allowed_ips.*.ip_address)
}
当我设置ip_rules = ["2.2.2.2", "3.3.3.3"]
时,创建规则没有问题,但我想以某种方式从上面的allowed_ips解析变量。
我试过各种方法包括
jsonencode(var.allowed_ips.*.ip_address)
"${join("\\,", local.subnets.*.id)}"
- 通过foreach迭代,
不幸的是,大多数解决方案都会抛出错误Inappropriate value for attribute "ip_rules": set of string required.
任何帮助都将不胜感激
2条答案
按热度按时间cwdobuhd1#
您可以使用简单的for循环来创建集合:
okxuctiv2#
看起来
ip_rules
参数需要set(string)
类型的值。如果您希望使用allowed_ips
变量,应该能够执行类似以下的操作:jsonencode
函数会将给定的值编码为字符串,这不是ip_rules
参数所期望的类型。join
函数也是如此,因为它的返回值是字符串类型。