Terraformローカル値ブロックをJSONに変換する
計算値、式、再利用可能な名前付き値を含むTerraform localsブロックをHCLからJSON形式に変換します。
Variables & Outputs
詳細な説明
HCLとJSONでのTerraformローカル値
localsブロックはモジュール内で名前付き値を定義し、設定全体で参照できます。変数とは異なり、ローカル値はモジュール内で計算され、入力として公開されません。
HCLローカル値定義
locals {
environment = "production"
project = "devtoolbox"
region = "us-east-1"
common_tags = {
Environment = "production"
Project = "devtoolbox"
ManagedBy = "terraform"
Team = "platform"
}
name_prefix = "devtoolbox-prod"
availability_zones = [
"us-east-1a",
"us-east-1b",
"us-east-1c"
]
}
JSON構造
localsブロックはラベルがないため独特です。すべての属性が直接の子です:
{
"locals": {
"environment": "production",
"project": "devtoolbox",
"region": "us-east-1",
"common_tags": {
"Environment": "production",
"Project": "devtoolbox",
"ManagedBy": "terraform",
"Team": "platform"
},
"name_prefix": "devtoolbox-prod",
"availability_zones": [
"us-east-1a",
"us-east-1b",
"us-east-1c"
]
}
}
式を使用するローカル値
ローカル値は多くの場合、計算式を含みます。length(var.availability_zones)や"${var.project}-${var.environment}"のような式はJSONでは文字列になります。
複数のlocalsブロック
HCLでは同じファイル内で複数のlocalsブロックが許可されています。JSONではこれらが1つのlocalsオブジェクトにマージされます。
ローカル値 vs 変数
両方とも名前付き値を定義しますが、variableブロックは外部入力を受け入れ、localsブロックは内部的に値を計算します。この区別はJSON構造でも保持されます。
ユースケース
Terraformモジュール全体で共通タグ、命名規則、計算された設定などの共有値を定義する場合。設定ジェネレーターの構築やTerraformコード構造のプログラマティックな分析時にJSON変換が役立ちます。