Локальные значения
Локальное значение присваивает имя выражению, чтобы можно было использовать это имя в модуле несколько раз вместо повторения выражения.
Если вы знакомы с традиционными языками программирования, будет полезно сравнить модули с определениями функций:
- Входные переменные аналогичны аргументам функции.
- Выходные значения аналогичны возвращаемым значениям функции.
- Локальные значения аналогичны временным локальным переменным функции.
Для краткости локальные значения часто называют просто «локальными», если их смысл ясен из контекста.
Объявление локального значения
Набор связанных локальных значений можно объявить вместе в одном блоке locals:
locals {
service_name = "forum"
owner = "Community Team"
}Выражения в локальных значениях не ограничиваются литеральными константами; они также могут ссылаться на другие значения модуля, чтобы преобразовывать или объединять их, включая переменные, атрибуты ресурсов и другие локальные значения:
locals {
# Ids for multiple sets of EC2 instances, merged together
instance_ids = concat(aws_instance.blue.*.id, aws_instance.green.*.id)
}
locals {
# Common tags to be assigned to all resources
common_tags = {
Service = local.service_name
Owner = local.owner
}
}Использование локальных значений
После объявления локального значения на него можно ссылаться в выражениях как local.<NAME>.
Локальные значения создаются блоком locals (во множественном числе), но на них ссылаются как на атрибуты объекта с именем local (в единственном числе). При ссылке на локальное значение не добавляйте «s»!
resource "aws_instance" "example" {
# ...
tags = local.common_tags
}К локальному значению можно обращаться только в выражениях внутри модуля, в котором оно было объявлено.
Когда использовать локальные значения
Локальные значения могут помочь избежать повторения одних и тех же значений или выражений в конфигурации, но при чрезмерном использовании они также могут затруднить чтение конфигурации тем, кто будет сопровождать её в будущем, скрывая фактически используемые значения.
Используйте локальные значения умеренно — в случаях, когда одно значение или результат используется во многих местах и это значение, вероятно, будет изменено в будущем. Возможность легко изменить значение в одном центральном месте — главное преимущество локальных значений.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.10/language/values/locals/