组合两组 IP 以形成单个输出 Terraform

Combine two sets of IPs to form a single output Terraform

我有两个 Terraform 资源,每个资源创建多个 EC2(一个 Linux EC2,另一个 Windows),并且它们每个都有其 IP 的输出(这个用于 Linux, Windows 有 target_windows 而不是 target):

output "target_ips" {
  value = aws_instance.target.*.private_ip
}

我想将两个输出合并为一个输出,以便以后拥有线路时更容易访问。有人知道怎么做吗?

Terraform's setunion function 可以将两个集合组合成一个包含两个集合中所有值的新集合:

output "target_ips" {
  value = setunion(
    aws_instance.target.*.private_ip,
    aws_instance.target_windows.*.private_ip,
  )
}

在这种情况下,根据定义,这两个输入中不能有共同的值,因为每个实例的 IP 地址都是唯一的,但为了完整起见,我会注意到由于集合的规则 setunion 结果将只包含每个唯一值一次,即使它出现在两个输入中也是如此。