This is exactly what Ansible is used for.
There is no agent, you just have to create a text file called:
with content that looks something like:
This would specify that machines "web1, web2...web8" are in the group "webhosts". Then you can do things like:
ansible webhosts -m service -a "name=apache2 state=restarted" --sudo
to restart the apache2 service on all your machines, using sudo.
You can do on the fly commands like:
ansible webhosts -m shell -a "df -h"
or you can create a playbook (look up the documentation for details) with a complete configuration that you want your servers to conform to and deploy it with:
Basically you can start using it as a command line tool for running commands on multiple servers and expand its usage out into a complete configuration tool as you see fit.