- OpenTofu言語
- 変数と出力値
- ローカル値
ローカル値
ローカル値は、式に名前を割り当て、モジュール内で式を繰り返す代わりに、その名前を複数回使用できるようにします。
従来のプログラミング言語に精通している場合は、モジュールを関数定義と比較すると理解しやすいでしょう。
注
簡潔にするため、文脈から意味が明確な場合は、ローカル値を単に「ローカル」と呼ぶことがよくあります。
ローカル値の宣言
関連するローカル値のセットは、単一の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
}
ローカル値は、宣言されたモジュール内の式でのみアクセスできます。
ローカル値を使用する場合
ローカル値は、構成で同じ値または式を複数回繰り返すのを避けるのに役立ちますが、使いすぎると、使用されている実際の値が隠蔽され、将来の保守担当者にとって構成が読みにくくなる可能性があります。
ローカル値は、単一の値または結果が多くの場所で*使用*され、*かつ*その値が将来変更される可能性が高い場合にのみ、適度に使用してください。一元管理された場所で値を簡単に変更できることが、ローカル値の主な利点です。