Terraform 入门:用代码管理云基础设施的核心理念与实战
手工在云控制台上点击创建资源——管理 3 台服务器时还能应付,但跨多个云厂商管理上百个资源时就是运维灾难。Terraform 用代码来定义和管理基础设施。
核心理念:声明式 vs 命令式
命令式(Ansible 风格):你告诉机器每一步怎么做。
声明式(Terraform 风格):你描述目标状态,Terraform 计算如何达成。
这意味着你可以反复执行 terraform apply——如果资源已经处于目标状态,不会做任何变更。这叫做幂等性,是 IaC 的基石。
第一个 Terraform 项目
以在 Cloudflare 上配置 DNS 为例:
定义资源(resource + provider),然后 terraform init 下载插件、terraform plan 预览变更、terraform apply 执行变更。
状态文件(State)—— Terraform 的灵魂
Terraform 通过 terraform.tfstate 文件记录真实基础设施与配置之间的映射。丢失状态文件意味着 Terraform 不知道哪些资源归自己管。
生产环境必须使用远程状态存储(S3/Azure/GCS):多人协作共享状态、不依赖本地文件、状态锁防并发冲突。
变量验证
Terraform 支持变量验证——在编译期就拦截无效的输入值,这在生产环境中极其重要。比如限定环境变量只能是 dev/staging/prod 三者之一。
模块化:DRY 原则
当多个项目需要相同的基础设施结构时,用模块替代复制粘贴。一个 web_server 模块可以让 10 个服务复用同一个经过验证的基础设施模板。
总结
Terraform 用声明式代码替代手工点击,用状态文件追踪资源,用 plan/apply 保障安全性。从 Cloudflare DNS 到 AWS 完整架构——基础设施即代码不是时髦词汇,它是规模化的唯一出路。
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自CC 的技术工坊
