Змінні
Вхідні
https://developer.hashicorp.com/terraform/language/values/variables
Вихідні
https://developer.hashicorp.com/terraform/language/values/outputs
Локальні
https://developer.hashicorp.com/terraform/language/values/locals
Локальне значення присвоює ім'я виразу, тому ви можете використовувати ім'я кілька разів у модулі замість того, щоб повторювати вираз.
Якщо ви знайомі з традиційними мовами програмування, вам буде корисно порівняти модулі Terraform з визначеннями функцій:
- Вхідні змінні схожі на аргументи функції
- Вихідні значення схожі на значення, що повертаються функцією
- Локальні значення - це тимчасові локальні змінні функції
Оголошення локального значення
Набір пов'язаних локальних значень можна оголосити разом в одному блоці 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>.
[!TIP] Локальні значення створюються блоком
locals(множина), але ви посилаєтеся на них як на атрибути об'єкта з іменемlocal(однина). Переконайтеся, що при посиланні на локальне значення ви не використовуєте "s"!
resource "aws_instance" "example" {
# ...
tags = local.common_tags
}
До локального значення можна отримати доступ у виразах тільки в тому модулі, де воно було оголошене.
Коли слід використовувати локальні значення
Локальні значення можуть бути корисними для уникнення багаторазового повторення тих самих значень або виразів у конфігурації, але при надмірному використанні вони також можуть ускладнити читання конфігурації майбутніми супровідниками, оскільки приховують реальні значення, що використовуються.
Використовуйте локальні значення лише помірковано, у ситуаціях, коли одне значення або результат використовується у багатьох місцях, і це значення, ймовірно, буде змінено у майбутньому. Можливість легко змінити значення у центральному місці є ключовою перевагою локальних значень.