3.2 Terraform 核心:State 管理、模块化设计与常用命令详解
1. 引言:Terraform 的“大脑”
上一节我们体验了terraform apply的爽快。但如果你在团队里使用 Terraform,很快就会遇到两个致命问题:
- 状态冲突:小张改了 VPC,小李也改了 VPC,
terraform.tfstate文件如果不共享,你们的资源就会打架。 - 代码臃肿:如果你把 50 台服务器的定义都写在
main.tf里,这个文件会有几千行,难以维护。
本节我们将深入 Terraform 的心脏——State(状态管理)和Modules(模块化)。掌握了这两点,你才算真正入门了企业级 IaC。
2. State 管理:Terraform 的记忆体
2.1 什么是 State?
Terraform 不会每次都去云厂商 API 查所有资源(那样太慢且易触发流控)。它依赖一个本地文件terraform.tfstate(JSON 格式)来记录资源的 ID 和属性。
State 的作用:
- 映射真实世界:将代码里的
resource "aws_instance" "web"映射到真实 IDi-12345678。 - 依赖元数据:记录资源之间的依赖关系。