Cấu trúc thư mục
Tổng quan cây thư mục terraform-resource và vai trò của từng thành phần
Tổng quan
Dự án được tổ chức theo cấu trúc sau:
terraform-resource/
terraform-resource/
├── GUIDE.md ← User guide (English)
├── HUONG-DAN-DEPLOY.md ← User guide (Vietnamese)
├── milu2-stage-infrastructure-*.md ← Architecture reference docs
│
├── plan/ ← Design documents for each module
│ ├── README.md ← Architecture overview + module order
│ ├── 01-vpc/plan.md ← VPC module details
│ ├── 02-subnets/plan.md ← Subnets module details
│ ├── ... ← Each module has its own plan.md
│ ├── 17-ec2-instances/
│ │ ├── plan.md ← EC2 instances module details
│ │ └── iptables-role-map.md ← Per-role iptables rules
│ ├── shared/ ← Plans for shared modules
│ │ ├── s3/plan.md
│ │ ├── iam/plan.md
│ │ └── cloudfront/plan.md
│ └── test-deploy-singapore.md ← Sample deploy plan
│
└── terraform/
├── deploy.ps1 ← Automated deploy script (main entry)
├── preflight-check.ps1 ← Pre-deploy validation script
├── main.tf ← Calls all stage modules
├── variables.tf ← Stage variables
├── outputs.tf ← Stage outputs
├── providers.tf ← AWS provider + peer alias
├── terraform.tfvars ← Variable values for deployment
│
├── modules/ ← Stage modules (per-region)
│ ├── 01-vpc/
│ ├── 02-subnets/
│ ├── 03-internet-gateway/
│ ├── 04-route-tables-peering/
│ ├── 05-security-groups/
│ ├── 06-alb/
│ ├── 07-nlb/
│ ├── 08-target-groups-listeners/
│ ├── 09-autoscaling/ ← API ASG + Launch Template
│ ├── 11-ecr/
│ ├── 12-acm/
│ ├── 13-route53/
│ ├── 15-iam/ ← Data source only
│ ├── 16-cloudwatch/
│ └── 17-ec2-instances/ ← Fixed EC2 (web/mysql/mongo/redis/node_*)
│
└── shared/ ← Shared resources (global/account-level)
├── main.tf
├── terraform.tfvars
└── modules/
├── s3/ ← 4 S3 buckets
├── iam/ ← IAM role + instance profile
└── cloudfront/ ← 2 CloudFront + ACM us-east-1Các file chính
Giải thích vai trò của các file quan trọng:
| File | Vai trò |
|---|---|
| deploy.ps1 | Script deploy tự động (7 bước): login → confirm → preflight → shared → stage → verify |
| preflight-check.ps1 | Kiểm tra 10 hạng mục trước deploy: credentials, S3, IAM, CloudFront, ECR, AMI, ACM, VPC Peering, CIDR scan, region |
| main.tf | File chính gọi tất cả stage modules |
| variables.tf | Định nghĩa các biến input cho stage |
| terraform.tfvars | Giá trị biến cho deployment hiện tại |
| providers.tf | AWS provider + alias cho cross-region peering |
| outputs.tf | Outputs sau khi apply (DNS, ARN, ID) |
Quy ước đặt tên Module
Thông tin
Module đánh số thứ tự (01-vpc, 02-subnets, …) để dễ đọc. Thực tế Terraform tự giải dependency, không cần chạy theo thứ tự.
| Lớp | Modules | Chức năng |
|---|---|---|
| Network | 01-vpc, 02-subnets, 03-internet-gateway, 04-route-tables-peering | VPC /16, 2 subnet public, IGW, route table, VPC Peering |
| Security | 05-security-groups | 7 SG theo vai trò (app, db, node-game/world/chat/commu) |
| Load Balancer | 06-alb, 07-nlb, 08-target-groups-listeners | ALB internal + public (HTTPS), NLB (MySQL/Mongo/Redis TCP) |
| Compute | 09-autoscaling, 17-ec2-instances | ASG cho API (auto-scale), EC2 cố định cho Web/DB/Node |
| Registry & Cert | 11-ecr, 12-acm | 7 ECR repo + wildcard cert *.milu.jp |
| DNS & IAM | 13-route53, 15-iam | Private hosted zones → ALB/NLB; IAM role (data source) |
| Observability | 16-cloudwatch | Alarm ASG + ALB |
Thư mục plan/
Chứa tài liệu thiết kế chi tiết cho từng module. Mỗi module có file plan.md riêng mô tả:
- Mục đích và tổng quan của module
- Resources sẽ được tạo
- Input variables và giá trị mặc định
- Outputs
- Dependencies với các module khác
- Lưu ý đặc biệt và edge cases
Mẹo
Tham khảo plan/README.md để xem sơ đồ kiến trúc tổng quan và thứ tự module.