Spec-Zone.ru › OpenTofu 1.12

templatestring Функция

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

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

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

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

Spec-Zone.ru

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