Явно используя переменную по умолчанию в Terraform - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть карта значений (заполняемая из Consul), которую я использую для настройки своих ресурсов, однако, если значения для необязательных переменных отсутствуют, я бы хотел, чтобы Terraform действовал, поскольку параметр не был предоставлен.Например:

resource "aws_db_instance" "db" {
  engine = "${lookup(config_map, "db_engine", "postgres")}"
  port   = "${lookup(config_map, "db_port", "<pick default for the engine>")}"
}

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

1 Ответ

0 голосов
/ 26 декабря 2018

Следующее должно делать то, что вы ожидаете (синтаксис проверен, однако apply не был проверен: я обновлю ответ, если он будет работать, или удалю его в противном случае).

Сначала вы должныгде-то есть отображение между движками и портами по умолчанию (здесь это переменная, но она может храниться в Консуле, как ваш config_map):

variable "default_ports_by_engine" {
  type = "map"

  # key = engine, value = port
  default = {
    "postgres" = "3333"
    "mysql"    = "3334"
    # other engines/ports...
  }
}

Затем вы можете использовать эту переменную во вложенномlookup:

resource "aws_db_instance" "db" {
  engine = "${lookup(config_map, "db_engine", "postgres")}"
  port   = "${
    lookup(
      var.default_ports_by_engine,
      "${lookup(config_map, "db_engine", "postgres")}"
    )
  }"
}

Обратите внимание, что отсутствие передачи третьего аргумента функции lookup приведет к сбою Terraform, если db_engine не найден в default_ports_by_engine.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...