Spec-Zone.ru › OpenTofu 1.9

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.9/language/functions/templatestring/

Spec-Zone.ru

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