Vagrant provisioning shell vs puppet vs chef Vagrant provisioning shell vs puppet vs chef shell shell

Vagrant provisioning shell vs puppet vs chef


The following article concerns yet another CM tool (ansible), but I think the author does an excellent job of explaining the benefits of transitioning away from shell scripts.

http://devopsu.com/blog/ansible-vs-shell-scripts/

quote 1:

What really surprised me was the response from some of these more famous devs. They basically said, "This is really cool, but I probably won't read it since my manual-install/shell-script workflow is fine for now."

I was a little shocked, but once I thought about it for a few minutes, I realized that their choice was perfectly sane and rational given what they knew about CM tools.

quote 2:

For them, using a CM tool meant weeks of effort learning complex concepts, struggling with a complex installation process, and maintaining that complex system over time. They were somewhat aware of the benefits, but the costs of using a CM tool just seemed too high to make it worth the effort.

The benefits over shell scripts are summarized at the end and I think they apply to all CM tools, puppet, chef, salt, ansible...

  • Which method is most likely to end up in source control?
  • Which method can be run multiple times safely with confidence?
  • Which method can easily be run against multiple servers?
  • Which method actually verifies (tests) your server for correctness?
  • Which method can target certain servers easily (web, db, etc)?
  • Which method supports easily templating your configuration files?
  • Which method will grow to easily support your whole stack?

Hope this helps.


Updated 2016

For those who found this through Google, it seems a bunch of developers are moving towards Ansible for the simplicity. From post:

"Ansible is the deployment tool for people who don't like deployment tools. It's close to scripting, doesn't pollute your servers with agents or centralized servers, and just makes immediate sense."

We implemented it recently in our microservice architecture and it's been awesome.

  • Super simple
  • Took about a day to pick up
  • Don't really need to think about it once you're set

Puppet/chef always have a place in my heart / stack, but Ansible is just easier.