Configuration management tools

Currently I only have a simple check-list with notes of what needs to be installed/configured/done when installing a new machine. A better solution will be to use an automated configuration management tool.

A quick search indicates that Ansible, Puppet, CFEngine, Docker, SaltStack and Chef is the most popular ones.  About the communities, there is a nice article that quantifies the configuration management communities. I have heard about some of them before, and other are new to me. After a bit of research, these are my takeaways:

  • CFEngine is the classical one, – I rememeber hearing about this from a very competent unix administrateor many years ago.
  • PuppetLabs are active in the Clojure community.
  • Docker is a different beast than the others, as it focusses on building containers for apps, rather than configuring machines. Both approaches has the effect of easy setup,
  • The configuration management tools almost has three generation, CFEngine is the oldest in C; Then there are Puppet and Chef  in ruby; and Ansible and SaltStack are the newest in python.
  • Ansible seems to have a focus on keeping it as simple as possible, and looks most approachable, and useful for getting the configuration/setup scripts done.
  • SaltStack seems quite well engineered.


As my goal is just to make the machine setup/configuration as easy as possible, Ansible seems the best and most approachable choice, when just deploying on linux.

All of the platforms has it merits, and especially SaltStack and Docker is also interesting, – SaltStack seems like a good choice for operations at larger scale, and Docker sounds like the solution for deploying a specific app on many platforms.