Nowadays with the rise of DevOps culture usage of a configuration manager seems normal and it is a good thing. It allow to manage configuration as code, to deploy and patch quickly, to test deployments, etc… and this on hundred or thousand of machine without pain.

This review is based on other experiences and reports. As I am a Python developer I will consider only Salt and Ansible leaving Chef and Puppet besides.

Ansible

  • Easy to learn, documentation is great and accessible for newcomer
  • Does not require any master or process to run on host, it use SSH
  • Slower than Salt to execute a command as an SSH connection is done on each host
  • Community seems not as open as Salt one.

Salt

  • Very fast but require a master to manage salves (may work without but not the recommended way)
  • Use ZeroMQ for communications, very scalable but not encrypt by default
  • Very powerful but learning curve is higher to get hands on
  • Good documentation since you known what you are looking for
  • Community seems very open to discussions and contributions

Ansible and Salt are both great tools, it is hard to make a choice based just on these pros and cons. Choices have to be made depending on project requirements (how many hosts, automatic scaling, etc…) but also available resources (someone in your team already know one of this project? How many time you can spend learning the tool?)

For more in depth reviews: