If you haven’t heard of them before, Ansible and Salt are frameworks that let you automate various system tasks. The biggest advantage that they have relative to other solutions like Chef and Puppet is that they are capable of handling not only the initial setup and provisioning of a server, but also application deployment, and command execution. This means you don’t need to augment them with other tools like Capistrano, Fabric or Func.
As an experiment, I decided to write a collection of Ansible Roles and Salt States to perform the same set of tasks and configure a brand new Ubuntu 12.04.2 LTS server [to run a Sinatra webapp under Nginx + Passenger with a Falcon-patched Ruby].
After my recent hosting adventures, I decided to investigate configuration management, and picked up O'Reilly’s Test-Driven Infrastructure with Chef.
I haven’t gotten to the good parts, but let me just gently caution that you should not try to work the exercises under OS X, and that running them in a VM is also advisable.
I’ve already seen enough, though, to hazard a guess that Ansible might be more my speed than Chef.
The post above by Joshua Lund provides a good flavor of Ansible and its spirit-brother, Salt. (This solution-space is getting pretty crowded, eh?)