Ansible 无 agent、YAML playbook、推送式执行,适合临时操作、网络设备和中小规模配置管理;Puppet 基于 agent/master、声明式清单,适合大规模主机的持续合规和配置收敛。需要快速上手/无 agent 选 Ansible,需要大规模持续状态管理选 Puppet。
| 维度 | Ansible | Puppet |
|---|---|---|
| 架构 | 无 agent,SSH/WinRM | agent + master(或 apply) |
| 语言 | YAML playbook | Puppet DSL |
| 执行 | 推送,按任务顺序 | 拉取,周期性收敛 |
| 状态 | 无中心状态 | 目录/报告,强制期望状态 |
| 扩展 | 模块/集合/角色 | 模块/Forge |
| 典型场景 | 临时操作、编排、网络设备 | 大规模主机基线、合规 |
ansible-playbook -i inventory site.yml --check --diff
puppet agent --test
puppet apply site.pp --noop
shell/command 要加 creates/changed_when。ansible-playbook — Ansiblepuppet — Puppetansible-vault — 敏感变量