Как использовать условие со списками в Terraform 11 - PullRequest
0 голосов
/ 27 февраля 2020

Мне нужно создать условие в terraform 11, где я проверяю, существует ли локальная переменная списка, если она существует, затем использует этот список, а если не использует другой.

Например, у меня есть:

var.localList = ["apples", "oranges"]

var.remoteList = ["bananas", "carrots"]

Теперь я хочу сделать что-то вроде этого (что не сработало):

myVar = ["${length(var.localList) > 0 ? var.localList : var.remoteList}"]

Итак, идея в том, что если var.localList не пусто, присвойте этот список myVar, в противном случае используйте var.remoteList.

Не уверен, возможно ли это в Terraform 11.

РЕДАКТИРОВАТЬ: Забыл упомянуть, что я использую terraform 11.

Ответы [ 3 ]

2 голосов
/ 27 февраля 2020

Вы можете сделать это с Локальными значениями :

variable "local_list" {
  default = ["foo"]
}

variable "remote_list" {
  default = ["bar"]
}

locals {
  myvar = length(var.local_list) > 0 ? var.local_list : var.remote_list
}

# myvar value is "foo"
output "myvar" {
  value = local.myvar
}
0 голосов
/ 28 февраля 2020

Функция coalescelist, кажется, делает именно то, что вы хотите.

Из документов

coalescelist принимает любое количество аргументов списка и возвращает первый, который не пустой.

Итак, вы бы написали что-то вроде

myVar = coalescelist(var.localList, var.localList)
0 голосов
/ 28 февраля 2020

Я нашел ответ здесь https://github.com/hashicorp/terraform/issues/18259

В основном это обходной путь на данный момент

myVar   = "${split(",", length(var.localList) > 0 ? join(",", var.localList) : join(",", var.remoteList))}"
...