Terraform 12 var и лучшие практики конкатенации строк

Я обновляюсь с terraform 0.11 до 0.12, и мне было интересно, что было «лучшей практикой» для объединения строк и переменных в моих .tf файлах.

Новый синтаксис довольно прост в отношении переменных:

# V0.11
foo = "${var.bar}"

# V0.12
foo = var.bar

но как я должен справиться с этой ситуацией?

foo = "${var.bar}-a-string"

Я должен сохранить этот синтаксис или превратить его во что-то вроде:

foo = join("-", [${var.bar}, "a", "string"])

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


person Community    schedule 27.12.2019    source источник
comment
Вызов функции для интерполяции простой строки на самом деле не будет лучшей практикой ни на одном языке. Первое перечисленное использование будет более простым, чем второе, и такое же использование, которое вы видите в других подобных декларативных DSL (Puppet, Jenkins Pipeline и т. Д.). Ни одно из перечисленных вами способов использования не является устаревшим, поскольку первое является документированным использованием, а второе - косвенным методом достижения того же результата.   -  person Matt Schuchard    schedule 27.12.2019
comment
Строковая интерполяция определенно не устарела в версии 0.12. Это становится ненужным только при использовании самой переменной - т.е. вместо того, чтобы делать some_prop = "${var.value}", теперь вы можете делать some_prop = var.value.   -  person Marcin Wyszynski    schedule 27.12.2019
comment
Спасибо за отзыв, тогда в этом случае будет сохранена строковая интерполяция!   -  person    schedule 28.12.2019


Ответы (1)


Чтобы объединить переменную со строкой, используйте этот синтаксис вместо join ():

foo = "string-${var.bar}-a-string"

Но если вы не хотите использовать переменную для конкатенации строк, вы можете использовать такой синтаксис:

foo = var.bar

person Vaibhav Khalane    schedule 02.01.2020