モジュール階層を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
AIが大好きなクラウドエンジニア。IT業界歴10年以上。標準化と効率化を追求している。技術ネタを発信中。フォローお気軽にどうぞ!フォローはこちら

カテゴリ

タグ