Comparisons =========== Confused about how Ansible fits in? Here's a comparison with some common tools. Accuracy is important, so corrections are VERY welcome if we've got something wrong. For space reasons, we can't list everybody's favorite management tool. Ansible mainly tries to be different in it's goals of minimalism, while also cutting across the categories of configuration management, deployment, and ad-hoc task firing. It strives to be a super-easy to use app, requiring no daemons or databases, and having a super-simple configuration management language that takes minutes to learn. Generally speaking, Ansible is answer to the question "why is the world's systems management software so complicated?" The code does not try to show off. It is an experiment in radical simplicity and encourages anyone to be able to easily contribute to it.
Ansible | Puppet | Chef | Func | Capistrano | mCollective | |
Purpose | Config, Deployment, Ad-Hoc | Config, Deployment | Config, Deployment | Ad-Hoc | Deployment | Ad-Hoc |
Inspirations | Cobbler, Puppet, Func, Taboot | cfengine | puppet | sysadmin SSH scripts | sysadmin SSH scripts | Func, puppet |
Config Language | Simple YAML format | Custom DSL | Ruby code | None | None | None |
Config Language Style | Very simple | Very rich, complex | Very rich, complex | None | None | None |
Config Ordering | Simply ordered, with notifiers | Strict dependency DAG | Simply ordered | None | Simply ordered | None |
Communication | SSH push | SSL pull or push trigger | SSL pull or push trigger(?) | SSL push | SSH | AMQP bus |
Daemons Required? | no | yes | yes | yes | no | yes |
Database Needed? | no | some features | yes | no | no | some features |
Message Bus Required? | no | no | yes | no | no | yes |
Inventory Features | planned | yes | yes? | some | no | no |
Implemented In | Python | Ruby | Ruby, Erlang | Python | Ruby | Ruby |
Extensible In | Anything | Ruby | Ruby | Python | Ruby | Ruby |
Codebase Size | Small | Large | Large | Medium | Medium | Medium |
Module Support | Emerging | Wide/Established | Wide/Established | Medium/Established | Poor | Medium/Established |
Users Targeted | Sysadmins, developers, QA, web admins | Sysadmins | Sysadmins, web admins | Sysadmins, developers | Web admins | Sysadmins |
Learning & Setup Curve | Minimal | High | High | Medium | Medium | Medium |
Can Easily Build Applications On It | Yes | No | No | Yes | No | Yes? |
Parallelism & Scaling Tech | Fork/Merge | Add Servers / Staged Commands / No Server | Adding More Erlang | Fork/Merge | No | Message Bus |
Delegated Hierachies | No | No | No | Yes | No | Yes |