上節我們已經把fabric給配置好了。這節我們通過fabric編寫批量執行伺服器任務和自動化運維管理。
先介紹下fabric的特點,這個在官方文件裡面已經介紹過:
1 **可讀性強,完全是python語言。
2 封裝了本地、遠端操,內建了一些方法。
3 可以根據需求靈活的定義引數。
4 角色定義,方便批量管理。
常用的配置引數:
env.host -- 主機ip,當然也可以-h引數指定
env.password -- 密碼,打好通道的請無視
env.roledefs -- 角色分組,比如:
fab -l -- 顯示可用的task(命令)
fab -h -- 指定host,支援多host逗號分開
fab -r -- 指定role,支援多個
fab -p -- 併發數,預設是序列
fab -w -- warn_only,預設是碰到異常直接abort退出
fab -f -- 指定入口檔案,fab預設入口檔案是:fabfile/fabfile.py
常用的函式:
local('pwd') -- 執行本地命令
lcd('/tmp') -- 切換本地目錄
cd('/tmp') -- 切換遠端目錄
run('uname -a') -- 執行遠端命令,一般會提示叫你輸入密碼。
sudo('/etc/init.d/nginx start') -- 執行遠端sudo,注意pty選項
下面是寫了乙個遠端複製檔案和本地複製檔案的函式。我把localhost既單做遠端,還單做本地來操作。
#encoding=utf-8
#description:fabric**測試。
from fabric.api import run,local,lcd,env,cd
env.hosts = ['localhost']
def localcopyfile():
'''本地檔案copy操作'''
local('pwd')
local('cp /home/laowang/workspace/info.txt /home/laowang/test')
'local copy file success'
def remote():
'''遠端檔案拷貝操作'''
run('pwd')
run('cp /home/laowang/workspace/test.py /home/laowang/test')
'remote copy file success'
本地localcopyfile方法的執行結果:
遠端remote方法的執行結果:
說明:1 遠端如果你沒在**裡面設定好密碼 的話,在執行指令碼的時候,**會提示讓你輸入密碼,才能執行,而本地的話,則不會。
2 這個只是簡單的演示,給運維的同學做乙個鋪墊。其實結合好linux自身的命令就可以做很多相關的批量執行伺服器和自動化運維管理的任務了。
Fabric批量遠端執行操作
最近有個需求就是要在乙個集群的多個機器上執行一些命令,比如啟動 停止服務,執行一些指令碼收集一些資料等,於是找到了python的乙個框架fabric。fabric是乙個python庫,用於簡化使用ssh的應用程式部署或系統管理任務。在我的centos上,執行下面的命令就可以簡單安裝 yum inst...
伺服器集群控制僅有一台伺服器執行任務
定時任務 批處理任務 設計不合理的反面教材 曾經使用spring batch批處理框架的tasklet進行批處理任務,使用redis鎖進行併發控制,在任務開始前使用redis的setnx命令往redis中插入值,任務結束後刪除值,任務只有在當前redis中不存在值時才執行啟動。設計不合理之處 存在單...
PSSH 批量管理伺服器
pssh這個工具,用python寫的,python版本大於2.4即可 wgetdownload 2 安裝 tarzxvf pssh 2.3.1.tar.gz cdpssh 2.3.1 python setup.py install install changing mode of usr local...