Spec-Zone.ru › OpenTofu 1.11

templatestring Функция

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

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

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

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

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

Поскольку строки в OpenTofu представляют собой последовательности символов Unicode, templatestring интерпретирует строку шаблона как текст в кодировке UTF-8, обеспечивая правильную обработку символов Unicode. Любые недопустимые последовательности 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.11/language/functions/templatestring/

Spec-Zone.ru

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