真实团队里,Terraform 绝不会只有一个 main.tf。
比较常见的组织方式是:
infra/
├── modules/
│ ├── network/
│ ├── app_service/
│ ├── postgres/
│ └── observability/
├── envs/
│ ├── dev/
│ ├── staging/
│ └── prod/
└── global/或者按平台分:
infra/
├── aws-network/
├── aws-apps/
├── cloudflare-dns/
├── kubernetes-platform/
└── shared-modules/#Environment
开发、测试、生产环境通常要隔离。 不要用一套 state 硬管理所有环境。
#Workspace
Terraform workspace 可以用,但它不是所有团队的主路径银弹。 很多成熟团队更偏向:
- 目录隔离环境
- 单独后端
- 单独变量
- 单独 CI pipeline
因为这样更清晰,也更不容易误操作。
城市比喻里:
workspace
= 同一总工局里切不同工程视图
独立目录 + 独立 state
= 真正把不同城区分别建档对大型工程来说,后者往往更稳。