[Terraform]모듈 기반 테라폼 구조 설계 가이드(Modular Terraform Architecture Guide)

Terraform 구조 설계 가이드: 재사용 가능한 글로벌 모듈 + 리전별 실행

✅ 목표

  • 모듈은 전역에서 재사용 가능하도록 modules/ 상위에 구성
  • 리전별로 실행 환경은 분리하여 관리 (terraform/pmpubp01dp01/apne1 등)

📁 디렉토리 구조

terraform/
├── modules/                        # 📦 글로벌 공통 모듈 (재사용 가능)
│   ├── vpc/
│   │   ├── main.tf
│   │   └── variables.tf
│   ├── subnet/
│   ├── route_table/
│   ├── igw/
│   ├── nat_gateway/
│   └── ec2/</p>
<p>├── pmpubp01dp01/                   # 프로젝트 명 (사용자 구분 가능)
│   └── apne1/                      # 🌏 도쿄 리전 실행 환경
│       ├── main.tf                # 모듈 호출
│       ├── provider.tf
│       ├── variables.tf
│       ├── terraform.tfvars
│       └── .terraform/ (init 후 자동 생성)</p>
<p>└── other-region/                  # 🔄 us-west-2, eu-central-1 등 확장 가능


📘 리전별 main.tf 예시 (apne1/main.tf)

module "vpc" {
  source   = "../../modules/vpc"
  vpc_cidr = var.vpc_cidr
  tags = {
    Name        = "vpc-${var.project}"
    Environment = var.env
  }
}</p>
<p>module "subnet" {
  source   = "../../modules/subnet"
  subnets  = var.subnets
  vpc_id   = module.vpc.vpc_id
}


🌟 장점 요약

항목 효과
✅ 모듈 재사용 한 번 정의한 리소스 구성을 모든 리전에서 사용 가능
✅ 유지보수 용이 모듈만 수정하면 전체 리전 반영
✅ 리전 독립 실행 리전 디렉토리에서 terraform 명령 실행 가능
✅ CI/CD 유리 리전별 실행 파이프라인 구성에 적합

✅ 적용 플랜

단계 설명
1️⃣ modules/ 디렉토리를 루트(terraform/) 하위로 이동
2️⃣ 각 모듈에 variables.tf로 외부 입력 설계
3️⃣ main.tf에서 source = "../../modules/..." 사용
4️⃣ terraform.tfvars는 리전 디렉토리별 별도 관리

🔚 결론

  • 지금 구조는 확장성 좋고, 팀 작업에도 적합
  • 바로 적용 가능하니 다음은 VPC/서브넷 모듈 구성으로 넘어가면 완벽!
0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x