Ansible is unlike mainstream configuration management tools as in, it does not require a centralised server for management. It's very lightweight and doesn't require any kind of client daemon to be running on every managed instance. This along with it's ease of configuration in yaml, make it a very good candidate for managing small to medium sized infrastructures where the overhead of having a constantly polling client daemon would be quite visible.
A benefit over the more popular tools like Chef and Puppet includes the fact that for the most part, one does not need to write code for setting up common infrastructures, machine configurations are done in yaml. Python knowledge would be required when writing plugins to add more functionality to ansible.
I will cover the architecture of ansible and yaml configurations. Finally, I'll demonstrate the use of it to set up a small infrastructure by writing playbooks for it.