モジュール階層を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
この記事を書いた人
T.Nakamura
T.Nakamura
SRE | セキュリティ前提の設計・運用・監査対応(PCI DSS) | ドキュメント整備と仕組み化で開発・運用を整えます | AWS SAP / 日商簿記一級フォローはこちら

カテゴリ

タグ