Terraform: count == true - PullRequest
       1

Terraform: count == true

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

Я использовал это ранее в своем коде TF:

count   = "${var.whatever == "true" ? 1 : 0}"

, который прекрасно работает для того, что я хотел использовать.Тем не менее, я думаю о том, как лучше использовать нечто подобное, чтобы сказать, что если var.whatever равно true, то число равно length(var.whatever).

Будет ли это работать?

count = "${var.whatever == "true" ? ${length(var.whatever) : 0}"

Просто у меня всегда было впечатление от TF, что вы не можете вкладывать интерполяции.

Кроме того, этот вид приводит меня к другому интересному вопросу ... что вы, ребята, используете для проверки синтаксиса?Я не хочу втиснуть TF Code, я имею в виду что-то, с чем можно запустить код, чтобы проверить подобные вещи?Я не хочу просто развертывать в dev, просто чтобы проверить вывод моего кода TF.Мне было интересно, есть ли что-то вроде оболочки, которую я мог бы буквально протестировать, как это было bash или что-то в этом роде.Есть мысли?

1 Ответ

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

Ваша первоначальная идея не будет работать, потому что если var.whatever является списком, то он также не может быть строкой (то есть = "true" ).

Однако хорошая новость заключается в том, что внутри общего троичного оператора можно использовать интерполяции.

Таким образом, вы можете получить что-то вроде:

count = "${var.bool == "true" ? length(var.whatever) : 0}"

Хорошийспособ проверить интерполяции перед тем, как поместить их в ваш окончательный код, - использовать консоль Terraform console (т. е. terraform console).

Настройте переменные в файлескажем console.tf в каталоге без какого-либо другого кода TF.

variable "whatever" {
  type = "list"
  default = ["1", "2", "foo", "bar" ]
}

variable "bool" {
  default = "true"
}

Теперь из командной строки запустите terraform console.

$ terraform console
>  var.whatever
[
  "1",
  "2",
  "foo",
  "bar",
]
> length(var.whatever)
4
> "${var.bool == "true" ? length(var.whatever) : 0}"
4
> exit
$ 

Вы можете видеть, что Terraform выполняет интерполяции, а затем запускает троичный оператор для этих оцененных значений.

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