I can't add much more than @allstek, other than to say that I have some experience in using Ansible (and other tools too) and it's a truly excellent tool for agent-less configuration management.
The benefit of Ansible over other tools in the landscape (such as Salt, Puppet, Chef etc.) is that it is agent-less from the ground up and requires very little in the way of dependencies, runs no background services, etc, which means that it's ideal for situations where you are managing remote machines without an infrastructure (Ansible leaves no trace of itself on the remote host) or even managing your own local machine.
In contrast, Salt, Puppet and Chef are all primarily an agent-master setup (though they all offer some kind of agent-less support, but secondarily and in practice nowhere near as smooth as Ansible). Puppet and Chef are pretty much just configuration management, and they really shine when there are lots of machines to configure. Salt has the added benefit of being a remote execution framework, allowing you to not only arbitrarily run commands on any number of hosts (minions) connected to the master but also to communicate between them and listen for events.
In summary, and in my experience:
Last note, another reason I like using both Ansible and Salt is that whilst they are quite different, they are both Python and both use YAML to describe state - which means it's not a massive jump for me to switch between them.
Hope my experience helps :-)