I love Ansible.<p>What's scary about shell scripts is the lack of idempotence (if you accidentally run them twice, things break).<p>What's annoying about chef/puppet is the bootstrapping overhead -- you can't start from a blank slate system, because you still need to install puppet-client or ruby+dependencies. So now you're paying to store a bunch of semi-pre-configured images with some out-of-date ruby gems or an old puppet-client. If you want to start from a blank image, then you're using shell scripts to install the toolchain that will let you avoid using shell scripts (or worse - doing it by hand!).<p>Ansible is idempotent ssh + shell scripting, so it solves the 'blank slate' problem nicely. It only requires python, which is bundled by default on ubuntu servers.