首页/开发/CI/CD 与发布速查/Terraform 基础流程与锁定
环境与配置管理60 条

Terraform 基础流程与锁定

基础设施即代码的常用工具:init/plan/apply 三段式,provider 版本锁定(lock 文件),变更先看 plan 再执行。

CI/CD 与发布速查开发更新于 2026-10-13

Terraform 是什么

Terraform 用声明式配置管理基础设施:把云资源写成 HCL,用 init/plan/apply 三段式执行。plan 先把将要发生的变更摊开给人看,apply 只执行被确认过的计划;state 记录现实与配置的对应关系。锁住 provider 版本(lock 文件入库)与执行环境的版本差异,是避免本地能跑、CI 计划意外的关键。与手工操作的差别不只是效率:配置可评审、计划可复现、状态可迁移,事故后能回答环境被谁改成了什么样。

基本信息

流程terraform init → plan → apply(CI 中 plan 展示、审批后 apply)
锁定.terraform.lock.hcl 记录 provider 版本与哈希,应入库
版本required_version 约束 Terraform 本身版本
状态state 是现实的映射;协作场景用远端后端并开启状态锁

三段式命令速读

命令作用注意
init下载 provider、初始化后端lock 文件据此校验哈希
plan生成变更计划存成 tfplan 防执行与评审不一致
apply执行计划仅执行 tfplan,不在本地随手跑

典型使用场景

  • 云资源纳入评审:新开数据库、改安全组都走 PR 与 plan 评审
  • 多环境复用:模块化配置,dev/staging/prod 用不同变量与后端
  • 灾备重建:基础设施可整体重建,配合镜像与脚本完成恢复演练
  • 合规审计:变更以代码留痕,谁改了什么一查即知
  • 存量迁移:既有资源用 import 纳入管理,逐步收敛手工操作
  • 成本治理:资源规格与标签策略写进代码,新资源默认带上成本归属标签
  • 合规基线:禁止公网开放、强制加密等规则用策略工具在计划阶段拦截

常用命令

常用命令
# 标准三段式,plan 产物用于评审后原样执行
terraform init                # 初始化 provider 与后端
terraform fmt -check          # 格式检查
terraform validate            # 语法与引用校验
terraform plan -out=tfplan    # 生成计划文件
terraform apply tfplan        # 原样执行获批计划
plan 产物(tfplan)用于评审后原样执行:保证执行的正是被看过的计划。
执行环境要固定:CI 与本地用同一 Terraform 与 provider 版本,否则出现无法复现的计划差异。
敏感值别进 state:密码与密钥交给专门的后端或外部密钥管理,state 文件本身按敏感数据处理。

易错点

  • 不进 CI 直接本地 apply:变更无人复核、无记录,集中到流水线
  • provider 版本不锁:上游行为变化导致计划意外,使用 lock 文件
  • state 放本地且多人协作:并发 apply 覆盖状态,用远端后端并开启状态锁
  • apply 时重新 plan:执行了没被评审过的新变更,只执行已生成的 tfplan
  • 导入存量资源忽略对账:import 后计划里仍是一片漂移,先逐项核对再纳管

数据来源与参考

  • Terraform 文档《CLI workflow》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌