Mempelajari cara mengelola multiple environment (dev, staging, production) dengan Terraform secara efisien dan konsisten.
Apa yang Akan Dipelajari? #
Mengelola multiple environment adalah tantangan nyata dalam Terraform. Section ini membahas berbagai strategi — dari directory-based approach hingga workspace — beserta kelebihan dan kekurangan masing-masing.
Artikel dalam Section Ini #
| Artikel | Topik Utama |
|---|---|
| Apa itu Environment? | Konsep environment dalam konteks IaC |
| Jenis Environment | Dev, staging, production — karakteristik dan kebutuhan masing-masing |
| Directory Based | Menggunakan struktur folder terpisah untuk setiap environment |
| Workspace | Menggunakan Terraform Workspace untuk multi-environment |
Environment Strategy #
flowchart TD
subgraph Directory["Directory-Based"]
D_ROOT["root/<br/>├── dev/<br/>├── staging/<br/>└── production/"]
D_PRO["Explicit separation"]
D_CON["More files to maintain"]
end
subgraph Workspace["Workspace-Based"]
W_ROOT["Single config<br/>+ workspace select"]
W_PRO["Less duplication"]
W_CON["Hidden differences"]
end
subgraph Terragrunt["Terragrunt"]
T_ROOT["DRY config<br/>+ per-env overrides"]
T_PRO["Best of both"]
T_CON["Extra tool"]
end
D_ROOT -->|"Alternatif"| W_ROOT
W_ROOT -->|"Alternatif"| T_ROOT
style Directory fill:#e3f2fd
style Workspace fill:#e8f5e9
style Terragrunt fill:#fff3e0Directory-Based Structure #
flowchart TD
subgraph Shared["Shared Modules"]
MOD_VPC["modules/vpc/"]
MOD_EC2["modules/ec2/"]
end
subgraph Dev["environments/dev/"]
DEV_MAIN["main.tf<br/>instance_type = t3.micro"]
end
subgraph Prod["environments/production/"]
PROD_MAIN["main.tf<br/>instance_type = t3.xlarge"]
end
MOD_VPC --> Dev
MOD_VPC --> Prod
MOD_EC2 --> Dev
MOD_EC2 --> Prod
style Shared fill:#f3e5f5
style Dev fill:#e8f5e9
style Prod fill:#fff3e0Environment Comparison #
flowchart LR
subgraph Dev["Development"]
D_INST["t3.micro"]
D_HA["Single AZ"]
D_BACKUP["No backup"]
D_MONITOR["Basic monitoring"]
end
subgraph Prod["Production"]
P_INST["t3.xlarge"]
P_HA["Multi-AZ"]
P_BACKUP["30-day backup"]
P_MONITOR["Full monitoring"]
end
Dev -->|"Promote"| Prod
style Dev fill:#e8f5e9
style Prod fill:#fff3e0Setelah memahami environment, lanjutkan ke Multi Provider untuk mempelajari cara menggunakan beberapa cloud provider sekaligus.