01-VPC
Module tạo VPC với CIDR được tính tự động từ stage_index
Stage Modulemodules/01-vpc
Mục đích
Tạo VPC riêng cho mỗi stage deployment. CIDR được tính tự động để tránh xung đột khi deploy nhiều stage trong cùng account.
Resources được tạo
| Resource | Mô tả |
|---|---|
| aws_vpc.this | VPC chính với CIDR /16 |
Input Variables
| Tên | Kiểu | Default | Mô tả |
|---|---|---|---|
| stage_index | number | 0 | Index để tính CIDR (0, 1, 2, ...) |
| reserved_offsets | list(number) | [0,1,2,3] | Các offset đã dùng (skip 172.30-33) |
| project | string | "MILU2" | Tag Project |
| environment | string | "stage" | Tag Environment |
CIDR Calculation Logic
CIDR được tính dựa trên stage_index và reserved_offsets:
CIDR Calculation
# locals.tf
locals {
# reserved_offsets = [0,1,2,3] → skip 172.30, 172.31, 172.32, 172.33
# stage_index = 0 → 172.34.0.0/16
# stage_index = 1 → 172.35.0.0/16
# stage_index = 2 → 172.36.0.0/16
base_cidr = 30 # Starting point
offsets = range(0, 100) # Generate 0-99
available = [for o in local.offsets : o if !contains(var.reserved_offsets, o)]
actual_offset = local.available[var.stage_index]
vpc_cidr = "172.${local.base_cidr + local.actual_offset}.0.0/16"
}| stage_index | VPC CIDR | Subnet main | Subnet second |
|---|---|---|---|
| 0 | 172.34.0.0/16 | 172.34.0.0/24 | 172.34.1.0/24 |
| 1 | 172.35.0.0/16 | 172.35.0.0/24 | 172.35.1.0/24 |
| 2 | 172.36.0.0/16 | 172.36.0.0/24 | 172.36.1.0/24 |
Outputs
| Tên | Mô tả |
|---|---|
| vpc_id | ID của VPC |
| vpc_cidr | CIDR block của VPC |
Dependencies
Thông tin
Module này là module đầu tiên, không phụ thuộc module khác.
Được sử dụng bởi
- 02-Subnets - Cần vpc_id để tạo subnets
- 03-Internet Gateway - Cần vpc_id để attach IGW
- 05-Security Groups - Cần vpc_id để tạo SGs
- 06-ALB - Cần vpc_id để tạo ALB