вывод terraform var для выбора элемента карты в списке карт - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть такой вывод:

output "esxi_gw_ip" {
  value = "${packet_device.esxi.network}"
}

, и результат такой:

       "outputs": {
                "esxi_gw_ip": {
                    "sensitive": false,
                    "type": "list",
                    "value": [
                        {
                            "address": "139.0.0.2",
                            "cidr": "29",
                            "family": "4",
                            "gateway": "139.0.0.1",
                            "public": "1"
                        },
                        {
                            "address": "blah",
                            "cidr": "127",
                            "family": "6",
                            "gateway": "blah",
                            "public": "1"
                        },
                        {
                            "address": "10.88.94.2",
                            "cidr": "29",
                            "family": "4",
                            "gateway": "10.88.94.1",
                            "public": "0"
                        }
                    ]
                }

Я хочу получить шлюз от family = 4 и public = 1 ...Как мне это сделать?Я могу получить первое из списка, как это, а затем использовать что-то вроде jq в local-exec:

output "esxi_gw_ip" {
  value = "${packet_device.esxi.network[0]}"
}

, но это не дает никаких гарантий, что оно всегда будет 0 иЯ также пытаюсь сделать это изначально в terraform против использования оболочки ...

1 Ответ

0 голосов
/ 20 февраля 2019

решил мой вопрос!если кому-то интересно .. вот как я это сделал .... в main.tf я добавил это:

data "template_file" "packet_gw_public" {
  count    = "${length(packet_device.esxi.network)}"
  template = "${lookup(packet_device.esxi.network[count.index], "public") == 1 && lookup(packet_device.esxi.network[count.index], "family") == "4" ? lookup(packet_device.esxi.network[count.index], "gateway") : "" }"
}

тогда в output.tf я добавил это:

output "esxi_gw_ip" {
  value = "${element(compact(data.template_file.packet_gw_public.*.rendered),0)}"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...