Ansible runs on the host and sends ssh commands to the guest. (See @leucos answer)
Puppet-agent runs on the guest and parses a catalog (manifest) that is provided.
Ansible can also run on the guest and do pulls.
Only Ansible up to now can run only on the host.
The rest of the provisioners like PUPPET, CHEF, CRFENGINE etc need an agent on the guest mostly.