Мой текущий output.tf
выглядит примерно так:
output "hosts" {
main = {
address = "${aws_instance.main.*.public_ip}"
private_address = "${aws_instance.main.*.private_ip}"
ssh_user = "ubuntu"
}
}
Результат terraform output -json
:
{
"hosts": {
"value": {
"main": [
{
"address": ["0.0.0.0", "0.0.0.1"],
"private_address": ["0.0.0.2", "0.0.0.3"],
"ssh_user": "ubuntu"
}
]
}
}
}
Как я могу сделать вывод, чтобы для каждого хоста была отдельная карта, что-то вроде:
{
"hosts": {
"value": {
"main": [
{
"address": "0.0.0.0"
"private_address": "0.0.0.2"
"ssh_user": "ubuntu"
},
{
"address": "0.0.0.1"
"private_address": "0.0.0.3"
"ssh_user": "ubuntu"
}
]
}
}
}
Это было бы намного легче разобрать. Также в этом примере, если некоторые хосты не будут иметь public_ip
или private_ip
, сопоставление публичных адресов частным адресам во время анализа станет невозможным, поскольку выходные массивы не синхронизированы.
Вывод не обязательно должен быть точно таким же, как в примере, но по концепции похожим: один набор данных на хост с несколькими полями из aws_instance
рассматриваемого хоста. Я также в порядке с созданием вывода во время применения (я полагаю, используя resource "local_file"
) вместо terraform output -json
, это даже не должен быть JSON, просто что-то, что я могу с уверенностью проанализировать.