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モジュール依存関係アナライザーを構築する場合。