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