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/