fabric

fabric is a tool for system administration/DevOps. It allows you to manage multiple servers with single command.

You can find more information about fabric at

http://www.fabfile.org/

fabric work over SSH, using SSH Keys. No special software needed to be install on server side. To install fabric on Ubuntu, run

$ sudo pip install fabric
[sudo] password for boby: 
Downloading/unpacking fabric
  Downloading Fabric-1.10.2-py2-none-any.whl (90kB): 90kB downloaded
Downloading/unpacking paramiko>=1.10 (from fabric)
  Downloading paramiko-1.15.3-py2.py3-none-any.whl (166kB): 166kB downloaded
Requirement already satisfied (use --upgrade to upgrade): pycrypto>=2.1,!=2.4 in /usr/lib/python2.7/dist-packages (from paramiko>=1.10->fabric)
Downloading/unpacking ecdsa>=0.11 (from paramiko>=1.10->fabric)
  Downloading ecdsa-0.13-py2.py3-none-any.whl (86kB): 86kB downloaded
Installing collected packages: fabric, paramiko, ecdsa
Successfully installed fabric paramiko ecdsa
Cleaning up...
$ 

To use fabric, you need to create a fabfile.py, here is my fabfile.py

$ cat fabfile.py
from fabric.api import env
from fabric.api import run

env.hosts = ['s20n','s46n','s48n','s74n']
env.user = 'root'
env.port = 3333

def uptime():
    run('uptime')

def mailq():
    run('exim -bpc')

def eximrm():
    run('eximrm')

def df():
    run('df -h')
def uname():
    run('uname -r')

def upgrade():
    run('yum upgrade -y')

def honcpanel():
    run('cd /usr/honcpanel && git pull origin master');

To run uptime on all servers, i run

fab uptime

fabric will run the command defined in mailq() function on all servers you specified in the file and display the result.

boby@fwhlin:~/www/fabric $ fab uptime
[s20n] Executing task 'uptime'
[s20n] run: uptime
[s20n] out:  04:58:19 up 1 day, 10:15,  1 user,  load average: 0.53, 0.76, 0.91
[s20n] out: 

[s46n] Executing task 'uptime'
[s46n] run: uptime
[s46n] out:  04:58:21 up 10 days, 21:12,  1 user,  load average: 2.08, 1.94, 2.04
[s46n] out: 

[s48n] Executing task 'uptime'
[s48n] run: uptime
[s48n] out:  04:58:32 up 2 days,  1:27,  1 user,  load average: 4.90, 5.75, 5.82
[s48n] out: 

[s74n] Executing task 'uptime'
[s74n] run: uptime
[s74n] out:  04:58:37 up 1 day, 10:27,  1 user,  load average: 1.04, 1.25, 1.37
[s74n] out: 


Done.
Disconnecting from s48n:3333... done.
Disconnecting from s46n:3333... done.
Disconnecting from s74n:3333... done.
Disconnecting from s20n:3333... done.
boby@fwhlin:~/www/fabric $

pip Failed to build cryptography


Posted in Python