Как модуль terraform может возвращать различные значения на основе параметра (переменной), переданного от вызывающей стороны - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть модуль terraform, например:

variable "whitelist_map" {
  type    = "map"
  default = {
    "10.1.1.1/32" = "alb_external_facing"
    "10.2.2.2"    = "jenkins_lb"
  }
}

output "whitelist_map" {
  value = "${var.whitelist_map}"
}

Однако я бы хотел, чтобы whitelist_map возвратил одно из двух возможных значений на основе переменной (скажем, callervar). Если callervar имеет значение 1, возвращается одно значение. Если callervar имеет значение 2, то возвращается другое значение.

Значение callervar будет получено из кода вызывающей стороны Terraform

Как мне это сделать?

Спасибо!

1 Ответ

1 голос
/ 06 апреля 2020

Я думаю, все, что вам нужно, это List, потому что Map не предоставляет структуру, подобную массиву, а дает хранилище, подобное ключу-значению.

Как вы сказали, этот код должен иметь index для доступа к элементу List. Переменная index называется foo и имеет тип number. Остальное делает list(map(string)), который предоставляет Map из List s в типе string.

В последнем фрагменте вы получаете доступ к этой переменной с индексом, который мы предоставили ранее.

variable "foo" {
  type = number
}

variable "whitelist_list" {
  type    = list(map(string))
  default = [
    { "10.1.1.1/32" = "alb_external_facing" },
    { "10.2.2.2"    = "jenkins_lb" }
  ]
}

output "whitelist" {
  value = var.whitelist_list[var.foo]
}
...