I currently have my own set of wrappers around [Paramiko](http://jessenoller.com/blog/2009/02/05/ssh-programming-with-paramiko-completely-different), a few functions that log the output as a command gets executed, reboot some server, transfer files, etc. However, I feel like I'm reinventing the wheel and this should already exist somewhere.

I've looked into [Fabric](http://docs.fabfile.org/en/1.8/) and it partially provides this, but its execution model would force me to rewrite a big part of my code, especially because it shares information about the hosts in a global variables and doesn't seem to be originally intended to be used as a library.

Preferably, each server should be represented by an object, so I could save state about it and run commands using something like `server.run("uname -a")`, provide some basic tools like rebooting, checking for connectivity, transferring files and ideally even give me some simple way to run a command on a subset of servers in parallel. 

Is there already some library that provides this?