Как определить число в aws_instance.main.*. Public_ip в 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_ip или же aws_instance.main.1.public_ip и поставить другое значение

Есть ли способ сделать такую ​​вещь с помощью terraform? Функция var.count не может быть использована в output.tf и т. Д.

1 ответ

Решение

Вы можете использовать интерполяцию срезов и элементов (код не проверен):

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 как список. Это должно дать вам то, что вы ищете.

Другие вопросы по тегам