Terraform 用声明式和状态文件管理云资源生命周期;Ansible 用无状态任务做主机配置、应用部署和编排。云资源优先 Terraform,主机内配置优先 Ansible,两者通常组合使用。
| 维度 | Terraform | Ansible |
|---|---|---|
| 模型 | 声明式 + 状态文件 | 过程式任务,幂等靠模块 |
| 状态 | 必须管理 state/backend | 无中心状态 |
| 资源 | 云 API、网络、IAM 等 | 主机、包、服务、文件 |
| 执行 | plan → apply | playbook 逐任务执行 |
| 回滚 | 通过 state/代码回退 | 依赖任务幂等和备份 |
| 生态 | Provider 丰富 | 模块/角色/集合丰富 |
terraform plan -out=tfplan
terraform apply tfplan
ansible-playbook -i inventory site.yml --check --diff
shell/command 要加 creates/changed_when。terraform — 基础设施ansible-playbook — 配置管理ansible-vault — 敏感变量