Spec-Zone.ru › OpenTofu 1.11

Вызовы функций

Язык OpenTofu содержит ряд встроенных функций, которые можно использовать в выражениях для преобразования и объединения значений. Они похожи на операторы, но используют общий синтаксис:

Блок кода
<FUNCTION NAME>(<ARGUMENT 1>, <ARGUMENT 2>)

Имя функции указывает, какую функцию вызвать. Каждая определённая функция принимает заданное количество аргументов определённых типов и возвращает результат заданного типа.

Некоторые функции принимают произвольное количество аргументов. Например, функция min принимает любое количество числовых аргументов и возвращает наименьшее из них:

Блок кода
min(55, 3453, 2)

В результате вычисления выражения вызова функции возвращается значение, полученное от функции.

Доступные функции​

Полный список доступных функций см. в справочнике по функциям.

Раскрытие аргументов функции​

Если аргументы для передачи функции находятся в списке или кортеже, это значение можно раскрыть в отдельные аргументы. Передайте значение списка в качестве аргумента и добавьте после него символ ...:

Блок кода
min([55, 2453, 2]...)

Символ раскрытия — это три точки (...), а не символ многоточия Юникода (…). Раскрытие — это специальный синтаксис, доступный только при вызове функций.

Использование конфиденциальных данных в качестве аргументов функций​

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

Например, передача объекта, содержащего конфиденциальную входную переменную, функции keys() вернёт список со всеми ожидаемыми ключами, а функция values() вернёт список, первый элемент которого будет конфиденциальным, поскольку значение ключа "a" является конфиденциальным.

Блок кода
> local.baz
{
  "a" = (sensitive value)
  "b" = "dog"
}
> keys(local.baz)
[
  "a",
  "b",
]
> values(local.baz)
[
  (sensitive value),
  "dog",
]

Когда OpenTofu вызывает функции​

Большинство встроенных функций OpenTofu, говоря терминами языков программирования, являются чистыми функциями. Это означает, что их результат зависит только от аргументов, поэтому на практике не имеет значения, когда OpenTofu их вызывает.

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

К небольшому набору специальных функций относятся file, templatefile, timestamp и uuid. Если вы не используете эти функции, этот раздел можно не читать, хотя изложенная здесь информация может быть полезна для общего понимания.

Функции file и templatefile предназначены для чтения файлов, включённых в конфигурацию как статические ресурсы, поэтому OpenTofu выполняет их при первоначальной проверке конфигурации, прежде чем предпринимать какие-либо другие действия с ней. Это означает, что ни одну из этих функций нельзя использовать для чтения файлов, которые конфигурация может динамически создавать на диске во время планирования или применения.

Функция timestamp возвращает представление текущего системного времени на момент её вызова OpenTofu, а функция uuid возвращает случайный результат, который меняется при каждом вызове. Без специального поведения обе эти функции привели бы к тому, что итоговая конфигурация на этапе применения не соответствовала бы действиям, показанным в плане, что нарушило бы модель выполнения OpenTofu.

По этой причине на этапе планирования OpenTofu обеспечивает возврат неизвестного значения обеими функциями, а фактический результат определяется только на этапе применения. В частности, для timestamp это означает, что зафиксированное время будет соответствовать моменту начала применения изменений в OpenTofu, а не моменту, когда OpenTofu составил план этих изменений.

Дополнительные сведения о поведении этих функций см. на страницах документации, посвящённых каждой из них.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/language/expressions/function-calls/

Spec-Zone.ru

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