Terraformモジュール呼び出しをJSONに変換する

ソース、バージョン、入力変数を含むTerraformモジュールブロックをHCLからJSON形式に変換し、プログラマティックなモジュール構成に活用します。

Modules

詳細な説明

Terraformモジュール呼び出し

モジュールブロックは再利用可能なTerraform設定を参照します。ソース(ローカルパス、レジストリ、Git URL)を指定し、子モジュールに入力変数を渡します。

HCLモジュール定義

module "vpc" {
  source  = "terraform-aws-modules/vpc/aws"
  version = "5.1.0"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-east-1a", "us-east-1b", "us-east-1c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway = true
  single_nat_gateway = true

  tags = {
    Environment = "production"
    Terraform   = "true"
  }
}

JSON構造

モジュールは標準的なブロックからJSONへのマッピングに従います:module > モジュール名 > 属性。

モジュールソース

source属性は複数の形式を受け入れます:

  • レジストリ: "terraform-aws-modules/vpc/aws"
  • GitHub: "github.com/org/repo"
  • ローカル: "./modules/vpc"
  • S3: "s3::https://bucket/module.zip"

すべてHCLでもJSONでも文字列として表現されます。

クロスモジュール参照

module.vpc.vpc_idのような参照はTerraformが解決する式です。JSONでは文字列として表示されます。

ユースケース

再利用可能なTerraformモジュールからインフラを構成する場合、サービスカタログからモジュール呼び出し設定を生成する場合、JSON設定を処理するTerraformモジュール依存関係アナライザーを構築する場合。

試してみる — HCL ↔ JSON Converter

フルツールを開く