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変換が役立ちます。

試してみる — HCL ↔ JSON Converter

フルツールを開く