Dự án lớn thường tách thư mục, mỗi env một state riêng, cùng gọi chung module.
Workspace hợp cho env tạm và ngắn hạn.
text
envs/
prod/ main.tf prod.tfvars backend key = prod/terraform.tfstate
staging/ main.tf staging.tfvars backend key = staging/terraform.tfstate
modules/
network/ service/Vì sao thư mục thắng ở production:
- Khác biệt giữa hai env hiện ra trong code, review được.
- Backend, IAM role và quyền apply tách hẳn nhau.
- Không có rủi ro terraform workspace select nhầm rồi apply vào production.
bash
terraform workspace new pr-1234 # hop cho env tam theo branchĐiểm phải giữ dù chọn cách nào: khác biệt giữa hai env là giá trị được khai báo rõ (instance type, replica count), không phải khác về cấu trúc.
Cấu trúc đã khác thì staging không còn kiểm chứng được gì.