Terraform 将元组展平为字符串集

Mic*_*ele 6 string tuples azure terraform azure-rm

我有以下 terraform allowed_ips 元组,其中包含 json 的 ip 地址和有关每个 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"
    }
  ]


Run Code Online (Sandbox Code Playgroud)

资源

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)
  }
Run Code Online (Sandbox Code Playgroud)

当我设置规则时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.

任何帮助将不胜感激

sil*_*ent 6

您可以使用简单的 for 循环来创建集合:

ip_rules = [for i in var.allowed_ips : i.ip_address]
Run Code Online (Sandbox Code Playgroud)