Fabric 批量安裝ZeroMQ

2021-06-28 00:24:12 字數 3066 閱讀 8717

fabric是乙個用python開發的部署工具,最大特點是不用登入遠端伺服器,在本地執行遠端命令,幾行python指令碼就可以輕鬆部署。關於fabric的安裝可以直接參考官網的內容(fabric 官網)

部署zeromq,本就是一件麻煩的事情,所以寫了乙個指令碼,用來實現多機統一部署

import sys, os, time

import fabric

from fabric.api import *

netifs = {}

now = time.strftime('%y%m%d-%h%m%s', time.localtime(time.time()))

def host(str=''):

if str == '-':

list = _to_list(sys.stdin)

else:

list = str.split('\n')

env.hosts = _to_hosts(list)

env.passwords = _to_passwords(list)

print env.passwords

netifs = _to_netifs(list)

print env.hosts

def _to_list(handle):

list =

while true:

line = handle.readline().strip()

if line:

else:

return list

def _to_hosts(list):

hosts =

for line in list:

kvp = line.split('|')

return hosts

def _to_passwords(list):

passwords = {}

for line in list:

kvp = line.split('|')

passwords[kvp[1]] = kvp[2]

return passwords

def _to_netifs(list):

passwords = {}

for line in list:

kvp = line.split('|')

netifs[kvp[1]] = kvp[0]

return netifs

def rsync_zmq():

run('mkdir -p /data/soft')

put("/data1/deploy1/deploy/bandwidth/zeromq/zeromq-2.2.0.tar.gz","/data/soft/zeromq-2.2.0.tar.gz")

def rsync_jzmq():

run('mkdir -p /data/soft')

put("/data1/deploy1/deploy/bandwidth/zeromq/jzmq-2.2.2.zip","/data/soft/jzmq-2.2.2.zip")

def yum_install(name):

run('yum -y install ' + name )

def install_zmq():

run('tar -zxvf /data/soft/zeromq-2.2.0.tar.gz -c /data/soft')

with cd('/data/soft/zeromq-2.2.0'):

run('./autogen.sh')

run('./configure')

run('make install')

with cd('/data/soft/zeromq-2.2.0/perf'):

run('./inproc_lat 100 20')

def install_jzmq():

run('unzip -o -d /data/soft/ /data/soft/jzmq-2.2.2.zip')

with cd('/data/soft/jzmq-2.2.2'):

run('chmod +x autogen.sh')

run('chmod +x configure')

run('dos2unix *.sh')

run('./autogen.sh')

run('./configure -with-zeromq=/data/soft/zeromq-2.2.0')

run('make install')

run('echo -e "/usr/local/lib" >> /etc/ld.so.conf')

run('sudo ldconfig')

def install_zmq_auto():

rsync_zmq()

rsync_jzmq()

yun_install('libuuid-devel')

install_zmq()

install_jzmq()

執行方式:

echo "eth0|伺服器ip|密碼|描述資訊" | fab -f deploy host:- rsync_soft

cat server.db |fab -f zeromq.py host:- install_zmq

上面的語句可以單獨對一台機器執行相應的方法,也可以將伺服器資訊寫入檔案,統一執行

fabric提供幾個簡單的api來完成所有的部署,最常用的是local()和run(),分別在本地和遠端執行命令,put()可以把本地檔案上傳到遠端,當需要在遠端指定當前目錄時,只需用with cd('/path/to/dir/'):即可。

預設情況下,當命令執行失敗時,fabric會停止執行後續命令。有時,我們允許忽略失敗的命令繼續執行,比如run('rm /tmp/abc')在檔案不存在的時候有可能失敗,這時可以用with settings(warn_only=true):執行命令,這樣fabric只會打出警告資訊而不會中斷執行。

fabric是如何在遠端執行命令的呢?其實fabric所有操作都是基於ssh執行的,必要時它會提示輸入口令,所以非常安全。更好的辦法是在指定的部署伺服器上用證書配置無密碼的ssh連線。

Fabric批量遠端執行操作

最近有個需求就是要在乙個集群的多個機器上執行一些命令,比如啟動 停止服務,執行一些指令碼收集一些資料等,於是找到了python的乙個框架fabric。fabric是乙個python庫,用於簡化使用ssh的應用程式部署或系統管理任務。在我的centos上,執行下面的命令就可以簡單安裝 yum inst...

ubuntu 安裝 fabric 步驟

一句話 sudo apt get install fabric 以下的不用看了。我是個python 盲,近期乙個專案的部署要用到fabric,所以記錄一下步驟 1.先安裝pip 估計類似於rubygem curl o python virtualenv.py my new env 2.再安裝 fab...

ubuntu 安裝 fabric 步驟

一句話 sudo apt get install fabric 以下的不用看了。我是個python 盲,近期乙個專案的部署要用到fabric,所以記錄一下步驟 1.先安裝pip 估計類似於rubygem curl o python virtualenv.py my new env 2.再安裝 fab...