This comment is disturbing because it assumes there is a wrong way to do things. In fact, the point of managing state is to react to the changing state of different resources (ie. services in a service-oriented architecture, the physical or virtual systems they run on, the networks that connect them, etc.) and to automatically resolve failures through known and tested state-migrations. If you missed that, you're in no position to be calling people wrong. Further, anyone wrapping bash in python and calling it elegant is insane.
"In fact, the point of managing state is to react to the changing state of different resources (ie. services in a service-oriented architecture, the physical or virtual systems they run on, the networks that connect them, etc.) and to automatically resolve failures through known and tested state-migrations."
They should be part of the definition of your system (ie the state), not changed on the fly.
If I said ShutIt was elegant, I was wrong (not sure where I did). It's not elegant, just as the real world is not.
Anyone trying to make config management look elegant is selling you a pup.
However if you want to write a deployment script, it also lets you, rather than fighting it kicking and screaming :)
A thousand times this! I, personally, find YAML easier to grok than whatever Puppet was using (see, post-puppet PTSD selective amnesia). And, anything that doesn't work, on a deadline, can be shell scripted now and modularized later.
The term CMS has been used to mean configuration management system for longer than it has been used to mean content management system. One can find articles from 1990 using it in the former context, while the latter appears to have been used since the late 1990s.
All resources in Ansible are declarative models of state, that get informed, and have idempotent properties.
So it's just like any CMS.
However if you want to write a deployment script, it also lets you, rather than fighting it kicking and screaming :)
Also, when you want to just push and run a script versus using one of the 234 other modules, it's there - http://docs.ansible.com/script_module.html