 <p>Your solution will almost definitely end up involving <code>ssh</code> in some capacity.</p> <p>You may want something to help manage the execution of commands on multiple servers; <a href="http://www.ansible.com/" rel="nofollow">ansible</a> is a great choice for something like this.</p> <p>For example, if I want to install <code>libvirt</code> on a bunch of servers and make sure <code>libvirtd</code> is running, I might pass a configuration like this to <code>ansible-playbook</code>:</p> <pre><code>- hosts: all tasks: - yum: name: libvirt state: installed - service: name: libvirtd state: running enabled: true </code></pre> <p>This would ssh to all of the servers in my "inventory" (a file -- or command -- that provides ansible with a list of servers), install the <code>libvirt</code> package, start <code>libvirtd</code>, and then arrange for the service to start automatically at boot.</p> <p>Alternatively, if I want to run <code>puppet apply</code> on a bunch of servers, I could just use the <code>ansible</code> command to run an ad-hoc command without requiring a configuration file:</p> <pre><code>ansible all -m command -a 'puppet apply' </code></pre>