モジュール階層を1〜2段階に保ちフラットな継承を維持する
ルール
Keep module hierarchy to 1-2 levels and maintain flat inheritance
(モジュール階層を1〜2段階に保ち、フラットな継承を維持する)
解説
サブモジュールから別のサブモジュールを呼び出す構造は極力避けます。避けられない場合でも1度までとします。 コピペしたDRYではないベタ書きが増えるわけですが、Terraform用コードは結局それがバランスがいいようです。
サンプルコード
# フラットなモジュール階層
# main.tf(ルートモジュール)
module "networking" {
source = "./modules/networking"
vpc_cidr = var.vpc_cidr
availability_zones = var.availability_zones
public_subnet_cidrs = var.public_subnet_cidrs
private_subnet_cidrs = var.private_subnet_cidrs
}
module "application" {
source = "./modules/application"
vpc_id = module.networking.vpc_id
private_subnet_ids = module.networking.private_subnet_ids
app_port = var.app_port
}
# modules/networking/ と modules/application/ は
# さらに他のモジュールを呼ばず、直接リソースを定義
参考リンク
Show Text to Shareモジュール階層を1〜2段階に保ちフラットな継承を維持する https://www.tricrow.com/infrastructure/development-guidline/module_design.shallow_hierarchy.html

