Функции
Встроенные функции
Язык 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!")
}Встроенные функции провайдера:
В OpenTofu есть встроенный провайдер terraform.io/builtin/terraform, который предоставляет дополнительные функции, доступные в конфигурациях OpenTofu.
Примечания для авторов провайдеров:
- Поддержка функций добавлена в версиях протокола 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.11/language/functions/