Вывести несколько полей с каждого хоста в виде отдельной карты - PullRequest
0 голосов
/ 30 октября 2018

Мой текущий 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, просто что-то, что я могу с уверенностью проанализировать.

...