基础设施即代码——用 HCL 声明式语言管理云资源,让云端资源像代码一样可版本化、可复现
传统运维中,服务器配置依靠工程师手动操作控制台或 SSH——这导致环境难以复现、变更难以追踪、协作容易冲突。当你需要在生产环境重建一套与测试完全一致的基础设施时,这种手工方式几乎不可能做到。
Terraform 由 HashiCorp 在 2014 年创建,用 HCL(HashiCorp Configuration Language) 声明式地描述你想要的基础设施状态,然后由 Terraform 负责将真实云资源调整到这个目标状态。整个过程可记录在 Git 仓库中,像代码一样 review、回滚、协作。
2023 年 HashiCorp 将 Terraform 改为 BSL 许可,社区 fork 出了 OpenTofu——一个与 Terraform 100% 兼容的开源替代,由 Linux Foundation 托管。本教程同时适用于两者。
声明式管理云资源的最佳工具
人类可读的配置语言,比 YAML/JSON 更强大,支持变量、函数、循环与条件。
tfstate 文件追踪真实资源与配置的对应关系,支持远程后端协作。
3000+ Provider 覆盖 AWS、GCP、Azure、阿里云、Kubernetes、GitHub 等所有主流平台。
封装可复用的基础设施模块,Terraform Registry 提供大量社区模块。
apply 前先 plan,预览所有变更,避免意外修改生产资源。
远程 state、Workspace 隔离、Atlantis/Spacelift 实现 GitOps 工作流。
系统掌握 Terraform,从入门到生产级最佳实践
命令式 vs 声明式、Terraform vs Pulumi vs CDK、OpenTofu 背景、工作流 init/plan/apply、核心概念体系。
HCL 基础语法、resource/variable/output/locals 块、类型系统、tfvars 文件配置管理。
provider 块配置、AWS EC2/VPC/S3 资源创建、多 provider 认证方式、环境变量认证。
tfstate 结构解析、state 操作命令、S3+DynamoDB 远程后端、state 加密与协作安全。
module 块调用、模块目录结构约定、Terraform Registry、私有模块、for_each 动态模块。
data 数据源查询、count vs for_each、条件表达式、dynamic 块、for 表达式与内置函数。
workspace 环境隔离、VCS 集成触发 plan、remote 后端、团队权限模型、Sentinel 策略。
terraform validate/fmt/lint、checkov 安全扫描、Terratest Go 测试框架、模块测试策略。
terraform import 命令、import 块(1.5+)、Terraformer 逆向生成 HCL、drift 检测、moved 块重构。
最小权限 IAM、secrets 不入 state、环境隔离、Atlantis GitOps、Infracost 成本估算。