Локальные значения
Локальное значение присваивает имя выражению, чтобы вы могли использовать это имя несколько раз в пределах модуля, не повторяя выражение.
Если вы знакомы с традиционными языками программирования, полезно сравнить модули с определениями функций:
- Входные переменные похожи на аргументы функции.
- Выходные значения похожи на возвращаемые функцией значения.
- Локальные значения похожи на временные локальные переменные функции.
Для краткости локальные значения часто называют просто «локальными», если смысл ясен из контекста.
Объявление локального значения
Набор связанных локальных значений можно объявить вместе в одном блоке 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.9/language/values/locals/