歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Fabric:Python遠程部署工具

Fabric:Python遠程部署工具

日期:2017/3/1 9:44:30   编辑:Linux編程

關於Fabric

Fabric是一個Python庫和命令行工具,旨在為應用部署和系統管理任務的SSH的流水線式操作,使之更加高效和方便。Fabric提供了一套基本的執行本地和遠程shell命令、上傳和下載文件的操作,包括一些輔助函數,例如驅動正在運行的用戶輸入或者放棄執行。

Fabric通過把大量頻繁使用的SSH操作寫入到一個腳本中(fabric.py),來遠程執行一些應用部署或者系統維護的任務。Fabric是類似paramiko的一個庫,是對paramiko的再次封裝,所以比使用paramiko更簡單。

《Python開發技術詳解》.( 周偉,宗傑).[高清PDF掃描版+隨書視頻+代碼] http://www.linuxidc.com/Linux/2013-11/92693.htm

Python腳本獲取Linux系統信息 http://www.linuxidc.com/Linux/2013-08/88531.htm

在Ubuntu下用Python搭建桌面算法交易研究環境 http://www.linuxidc.com/Linux/2013-11/92534.htm

Fabric的優點

1. 角色定義

2. 代碼易讀

3. 封裝了本地、遠程操作

4. 參數靈活,能偶動態指定host/role等,還有並發執行(基於multiprocessing)

5. 完整的日志輸出

安裝Fabric

Fabric的安裝很簡單,可以直接使用pip或者easy_install安裝到當前Python環境中,或者下載最新的源碼使用"python setup.py xxx"的方式來安裝:

#pip install fabric

使用Fabric

--------------------------------------------------------------------------------

1 Fabric通過命令行工具fab來執行定義在fabfile.py中的任務,常用的配置和函數如下

--------------------------------------------------------------------------------

1. 常用的fab命令選項和參數:

-l 顯示可用的task

-H 指定host,多個host用逗號分開

-R 指定role,多個role用逗號分開

-P 並分數,默認是串行

-w warn_only,默認為遇到異常直接放棄執行並退出

-f 指定入口文件,fab默認入口文件是:fabfile/fabfile.py


2. fabfile.py文件中常用配置和函數:

env.host 主機ip,也可以使用fab選項-H參數來指定

env.password SSH密碼,若已經設置好無密碼登錄,則可以忽略

env.roledefs 角色分組,如:{'web': ['x', 'y'], 'db': ['z']}

local('pwd') 執行本地命令

lcd('/tmp') 切換本地目錄

cd('/tmp') 切換遠程目錄

run('uname -s') 執行遠程命令

sudo('service httpd restart') 執行遠程sudo,注意pty選項


2 任務函數

--------------------------------------------------------------------------------

Fabric中的任務就是一個個Python函數,通過將上述的函數封裝到某一個函數中來執行相應的任務

示例:

#cat fabfile.py

from fabric.api import run

def host_type():

run('uname -s')


def hello(name="jayzhou"):

print("Hello %s!" % name)


def combine(name="jayzhou"):

hello(name)

host_type()

在執行任務的時候,可以通過fab的命令行參數為任務函數傳遞參數:

#fab hello:name=Rango


3. 管理遠程服務

--------------------------------------------------------------------------------

1. 獲取遠程服務器版本信息

#cat fabfile.py

from fabric.api import env

from fabric.api import cd


from fabric.api import run


from fabric.api import local


from fabric.api import get


from fabric.api import put


env.hosts = ['192.168.56.101', '192.168.56.102']

env.user = 'root'

env.password = "password"


def get_version():

local('cat /etc/issue')

run('cat /etc/issue')

with cd('/root/'):

put('/home/rango/test.txt', 'test.txt', mode=0755)

get('hello_world.txt')

run('ls')


def get_host_name():

run('hostname')

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-05/101616p2.htm

Copyright © Linux教程網 All Rights Reserved