terraform присваивает значение переменной значению поля карты или значение по умолчанию, если оно не существует - PullRequest
0 голосов
/ 04 февраля 2020

извините за базовый c вопрос ... Но я не смог найти более элегантный способ решить эту проблему ...

Ввод:

a = [
    { one=1, two=2, three=3},
    { two=2, three=3},
    { one=1, three=3},
]

В моем сценарии я есть что-то вроде

locals {
    containers = [for i, c in var.a : merge(c, {
        field1    = contains(keys(c), "one") ? c.one : "not defined"
        field2    = contains(keys(c), "two") ? c.two : "not defined"
        field3    = contains(keys(c), "three") ? c.three : "not defined"
        lastfield = contains(keys(c), "one") ? (contains(keys(c), "two") ? "${c.one},${c.two}" : "${c.one}") : ""
    })]
}

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

Также «lastfield» должно ссылаться на field1 и field2, а не перепроверьте, если поле существует.

Я думаю, что путь к go состоит в том, чтобы иметь некоторые промежуточные нулевые_ресурсы для cal c field1, field2, field3 и u использовать их в lastfield, но это не было бы оптимальным. .

Будем благодарны за любые предложения:)

Спасибо!

...