Spec-Zone.ru › OpenTofu 1.10

templatestring Функция

Функция templatestring позволяет отображать строку как шаблон, подставляя вместо заполнителей значения из заданного набора переменных шаблона.

Блок кода
templatestring(str, vars)

Синтаксис шаблона соответствует правилам строковых шаблонов основного языка OpenTofu и использует последовательности интерполяции, ограниченные ${ ... }. Эта функция позволяет вынести длинные последовательности шаблона в отдельную строку, чтобы упростить чтение и сопровождение.

При использовании функции templatestring важно учитывать необходимость последовательностей экранирования, чтобы предотвратить преждевременную интерполяцию. Чтобы заполнители оставались литералами до преобразования в переменные шаблона, используйте последовательности экранирования $${...} и %%{...} для представления литералов ${...} и %{...} соответственно. Это не позволяет шаблону интерпретировать заполнители как последовательности интерполяции или директив шаблона до их обработки. Следуя этому соглашению, вы сможете правильно задавать строки шаблона и избегать неожиданных синтаксических ошибок. Не забывайте применять эти последовательности экранирования при определении строк шаблона, чтобы функция templatestring обрабатывала их корректно.

Аргумент "vars" должен быть объектом. В строке шаблона каждый ключ карты используется как переменная для интерполяции. Кроме того, в шаблоне можно использовать любую другую функцию, доступную в языке OpenTofu. Имена переменных должны соответствовать соглашениям об именовании OpenTofu: начинаться с буквы, за которой могут следовать ноль или более букв, цифр или символов подчеркивания.

Поскольку строки в OpenTofu представляют собой последовательности символов Юникода, templatestring интерпретирует строку шаблона как текст в кодировке UTF-8, обеспечивая корректную обработку символов Юникода. Любые недопустимые последовательности UTF-8 в строке шаблона приведут к ошибке.

Примеры​

Простой строковый шаблон​

Простой пример использования templatestring для статической строки.

Блок кода
output "result" {
  value = templatestring("Hello, Jodie!", {})
}
Блок кода
result = Hello, Jodie!

Интерполяция строки с переменной​

В этом примере показана интерполяция строки путем вставки значения переменной в шаблон.

Блок кода
output "result" {
  value = templatestring("Hello, $${name}!", { name = "Alice" })
}
Блок кода
result = Hello, Alice!

Списки​

В этом примере показано использование функции templatestring с переменной-списком.

Блок кода
output "result" {
  value = templatestring("List Items: $${join(\", \", list)}", { list=["value1","value2","value3"] })
}
Блок кода
result = "List Items : value1, value2, value3"

Карты​

В этом примере показано использование функции templatestring с переменной-картой. Выполняется перебор пар «ключ-значение» в карте.

Блок кода
output "result" {
  value = templatestring("%%{ for key, value in list ~}  $${key}:$${value} %%{ endfor ~}", { list={key1="value1", key2="value2", key3="value3"} })
}
Блок кода
result = "key1:value1 key2:value2 key3:value3 "

Создание JSON или YAML​

При создании строк в синтаксисе JSON или YAML написание шаблона с большим количеством последовательностей интерполяции и директив может быть утомительным. Вместо этого упростите задачу, используя шаблон, состоящий из единственного вызова с интерполяцией: jsonencode или yamlencode. Укажите значение для кодирования с помощью стандартного синтаксиса выражений OpenTofu, как показано в следующих примерах:

Блок кода
locals {
  list = ["Value1", "Value2", "Value3"]
  formatted_list = "%{ for value in local.list ~}${value} %{ endfor ~}"
}

output "result" {
  value = templatestring(yamlencode(local.formatted_list), {})
}
Блок кода
result = <<-EOT
    "Value1 Value2 Value3 "
EOT

Дополнительные сведения см. в основной документации по функциям jsonencode и yamlencode.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/language/functions/templatestring/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API