Функции
Встроенные функции
Язык OpenTofu включает ряд встроенных функций, которые можно вызывать в выражениях для преобразования и объединения значений. Общий синтаксис вызова функции: имя функции, за которым следуют аргументы, разделённые запятыми и заключённые в скобки:
max(5, 12, 9)
Подробнее о синтаксисе см. раздел Вызовы функций в разделе «Выражения».
Вы можете экспериментировать с поведением встроенных функций OpenTofu в консоли выражений OpenTofu, выполнив команду tofu console:
> max(5, 12, 9) 12
В примерах в документации к каждой функции используется вывод консоли, чтобы показать результат вызова функции с разными параметрами.
Функции, определяемые провайдерами
Начиная с OpenTofu 1.7.0 провайдеры могут определять собственные функции, доступные во время выполнения.
OpenTofu перебирает блок required_providers и запрашивает у указанных провайдеров сведения о функциях, которые они хотят зарегистрировать. Функции добавляются в контекст текущего модуля под именами provider::<provider_name>::<function_name>. Также поддерживаются псевдонимы провайдеров под именами provider::<provider_name>::<provider_alias>::<function_name>. Область видимости функций ограничена модулем, которому требуется провайдер; дочерние модули их не наследуют.
Пример:
terraform {
required_providers {
myhelper = {
# yantrio/helpers registers a function named "echo"
source = "yantrio/helpers"
}
}
}
locals {
myval = provider::myhelper::echo("Hello Functions!")
}Примечания для авторов провайдеров:
- Поддержка функций добавлена в версии протокола 5.5 и 6.5.
- Протокол провайдеров OpenTofu совместим с протоколом провайдеров Terraform.
-
GetProviderSchema()используется для первоначального запроса списка функций, доступных в указанном провайдере. - Провайдеры, предоставляющие функции, можно настраивать; они могут предоставлять дополнительные функции через
GetFunctions(). Примеры реализации см. в экспериментальных провайдерах Lua и Go.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/functions/