Terraform 是什么
IaC 动机;与 Helm/GitOps 分工。
Terraform 是什么
这一课你将能做到
- 用自己的话说清楚 Terraform 解决什么问题、和手工点控制台有什么区别
- 在本机装好 Terraform 1.7+,并跑通第一条命令
terraform version - 看懂一份最简单的 Terraform 配置长什么样,知道「声明式」是什么意思
为什么要学
你的 Spring Boot 应用要上云,需要一台 EC2、一个 RDS、一个 S3 桶、一套安全组。第一次你可以在 AWS 控制台点鼠标点出来,但第二个环境(测试环境)怎么办?换区域怎么办?三个月后要扩容,谁还记得当时点了哪些选项?
Terraform 就是把「点鼠标建基础设施」这件事写成文本文件。文件可以进 Git,可以评审,可以复用,可以一键重建整套环境。行业里这叫 IaC(Infrastructure as Code,基础设施即代码),Terraform 是这个领域事实标准,运维、后端、DevOps 岗位几乎必考。
人话:手工建基础设施像在记事本里记密码,只有你自己懂、还容易忘;Terraform 像把菜谱写下来,任何人照着做,做出来的菜都一样。
先建立图像
Terraform 的核心循环只有四个动作:
写 .tf 文件 → terraform init (初始化,装插件)
→ terraform plan (预览:将创建/修改/删除什么)
→ terraform apply (执行:真正调用云 API)
→ terraform destroy(销毁:整套环境删掉)
对比两种工作方式:
| 维度 | 控制台手工操作 | Terraform |
|---|---|---|
| 操作记录 | 散落在浏览器历史和人脑里 | Git 提交历史,可追溯 |
| 新建一套同样环境 | 再点半小时,还容易漏 | 复制目录,apply |
| 谁改了什么 | 查不到 | git blame 一清二楚 |
| 灾难恢复 | 凭记忆重建 | 重新 apply |
| 多人协作 | 互相覆盖 | state 锁 + 代码评审 |
跟着做
步骤 1:安装 Terraform
Windows 推荐用 winget(PowerShell 中执行):
winget install Hashicorp.Terraform
macOS:
brew install terraform
安装后新开一个终端验证:
terraform version
看到类似 Terraform v1.7.x 即成功。本课程全部命令基于 1.7 及以上版本,1.5/1.6 的旧版本部分输出略有差异。
步骤 2:写第一份配置
新建目录 tf-demo,在里面创建 main.tf:
# 约束 Terraform 版本
terraform {
required_version = ">= 1.7.0"
}
# 用 null_resource 做演示:不需要任何云账号就能跑
resource "null_resource" "hello" {
triggers = {
message = "我的第一份 Terraform 配置"
}
}
null_resource 是一个「什么真实资源都不创建」的演示资源,适合验证工具链。注意它需要 null 插件,下一步 init 会自动下载。