如何在 terraform 中确定 aws_instance.main.*.public_ip 中的数字

How to determine the number in aws_instance.main.*.public_ip in terraform

我想在第一次做的服务器和第二次及以后做的服务器的输出结果中添加不同的信息,并显示出来。

最后我要做的事情如下

output
  ec2global_ips  [
    manager_ip is : xxx,
    node ip is: [xxx,xxx]
]

目前我的output.tf代码如下。

output "ec2_global_ips" {
  value = ["${aws_instance.main.*.public_ip}"]
}

为此,我认为有必要在某个地方判断aws_instance.main.0.public_ipaws_instance.main.1.public_ip并放另一个值

有没有办法用 terraform 制作这样的东西? var.count 函数不能用于 output.tf 等

您可以使用切片和元素插值(代码未经测试):

output "ec2_global_ips" {
  value = "${
    map(
      "manager_ip", "${element(aws_instance.main.*.public_ip, 0)}"
      "node_ips", "${slice(aws_instance.main.*.public_ip, 1, length(aws_instance.main.*.public_ip))}"
    )
  }"
}

根据您想要的输出判断,您似乎在寻找 manager_ip 是一个字符串(因此是元素而不是它的切片)并且 node_ips 是一个列表。这应该能满足您的需求。