当项目大起来后,你不可能每个环境都手写一遍:
- VPC
- 子网
- NAT
- 路由表
- 安全组
- 数据库
- 应用机器
- 日志系统
这时候就要用 module。
模块的本质可以理解成:
可复用的小区蓝图模板。
比如你可以有这些模块:
modules/
├── network/
├── eks-cluster/
├── postgres/
├── app-service/
└── observability/然后在主工程里调用:
module "network" {
source = "./modules/network"
project_name = "software-city"
cidr_block = "10.0.0.0/16"
}
module "app_service" {
source = "./modules/app-service"
name = "article-api"
subnet_id = module.network.private_subnet_id
}模块的意义不是“高级语法”。
它真正解决的是:
不要每次都重新画同一套小区图。
在城市比喻里:
resource是单栋建筑module是一整片标准住宅区蓝图