Earlier quoted context omitted.
"Everything I try to do in Ansible seems to turn into a shell script" This was my disappointment with Ansible (and other CM tools) - so why not treat the shell as the basic unit of action? See my post elsewhere on this page for more: https://news.ycombinator.com/item?id=8135823
This doesn't have to be the case. 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/scr…
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.