1. 程式人生 > >Python遠端部署利器Fabric詳解

Python遠端部署利器Fabric詳解

Fabric是一個Python的庫,它提供了豐富的同SSH互動的介面,可以用來在本地或遠端機器上自動化、流水化地執行Shell命令。因此它非常適合用來做應用的遠端部署及系統維護。其上手也極其簡單,你需要的只是懂得基本的Shell命令。本文將為大家詳細介紹Fabric的使用。

內容索引

安裝Fabric

首先Python的版本必須是2.7以上,可以通過下面的命令檢視當前Python的版本:

1$python-V

Fabric的官網是www.fabfile.org,原始碼託管在Github上。你可以clone原始碼到本地,然後通過下面的命令來安裝。

1$python setup.py develop

在執行原始碼安裝前,你必須先將Fabric的依賴包

Paramiko裝上。所以,個人還是推薦使用pip安裝,只需一條命令即可:

1$pip install fabric

第一個例子

萬事從Hello World開始,我們建立一個”fabfile.py”檔案,然後寫個hello函式:

Python
12defhello():print"Hello Fabric!"

現在,讓我們在”fabfile.py”的目錄下執行命令:

1$fab hello

你可以在終端看到”Hello Fabric!”字樣。

簡單解釋下,”fabfile.py”檔案中每個函式就是一個任務,任務名即函式名,上例中是”hello”。”fab”命令就是用來執行”fabfile.py”中定義的任務,它必須顯式地指定任務名。你可以使用引數”-l”來列出當前”fabfile.py”檔案中定義了哪些任務:

1$fab-l

任務可以帶引數,比如我們將hello函式改為:

Python
12defhello(name,value):print"Hello Fabric! %s=%s"%(name,value)

此時執行hello任務時,就要傳入引數值:

1$fab hello:name=Year,value=2016

Fabric的指令碼建議寫在”fabfile.py”檔案中,如果你想換檔名,那就要在”fab”命令中用”-f”指定。比如我們將指令碼放在”script.py”中,就要執行:

1$fab-fscript.py hello

執行本地命令

“fabric.api”包裡的”local()”方法可以用來執行本地Shell命令,比如讓我們列出本地”/home/bjhee”目錄下的所有檔案及目錄:

Python
1234fromfabric.api importlocaldefhello():local('ls -l /home/bjhee/')

“local()”方法有一個”capture”引數用來捕獲標準輸出,比如:

Python
12defhello():output=local('echo Hello',capture=True)

這樣,Hello字樣不會輸出到螢幕上,而是儲存在變數output裡。”capture”引數的預設值是False。

執行遠端命令

Fabric真正強大之處不是在執行本地命令,而是可以方便的執行遠端機器上的Shell命令。它通過SSH實現,你需要的是在指令碼中配置遠端機器地址及登入資訊:

Python
12345678fromfabric.api importrun,envenv.hosts=['example1.com','example2.com']env.user='bjhee'env.password='111111'defhello():run('ls -l /home/bjhee/')

“fabric.api”包裡的”run()”方法可以用來執行遠端Shell命令。上面的任務會分別到兩臺伺服器”example1.com”和”example2.com”上執行”ls -l /home/bjhee/”命令。這裡假設兩臺伺服器的使用者名稱都是”bjhee”,密碼都是6個1。你也可以把使用者直接寫在hosts裡,比如:

Python
1env.hosts=['[email protected]','[email protected]']

如果你的”env.hosts”裡沒有配置某個伺服器,但是你又想在這個伺服器上執行任務,你可以在命令列中通過”-H”指定遠端伺服器地址,多個伺服器地址用逗號分隔:

1$fab-Hbjhee

相關推薦

Python遠端部署利器Fabric

Fabric是一個Python的庫,它提供了豐富的同SSH互動的介面,可以用來在本地或遠端機器上自動化、流水化地執行Shell命令。因此它非常適合用來做應用的遠端部署及系統維護。其上手也極其簡單,你需要的只是懂得基本的Shell命令。本文將為大家詳細介紹Fabric的使用。內

fabric實戰指南二】Fabric v1.0 部署過程原理

fabric區塊鏈兄弟社區,區塊鏈技術專業問答先行者,中國區塊鏈技術愛好者聚集地作者:吳壽鶴來源:區塊鏈兄弟原文鏈接:http://www.blockchainbrother.com/article/18著權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。編譯fabric tools我們會編譯以

系統批量運維管理器Fabric

fabric程序1、fab常用的參數fab作為Fabric程序的命令行入口,提供了豐富的參數調用,命令格式如下:fab [options] <command>[:arg1,arg2=val2,host=foo,hosts=‘h1;h2‘,...]...-l,顯示定義好的任務函數名;-f,指定fab

python的字符串

python字符串str詳解python的字符串內建函數詳解: 一、string.capitalize() 描述: string.capitalize():將字符串的第一個字母變成大寫,其他字母變小寫。對於 8 位字節編碼需要根據本地環境。

web緩存服務器varnish-4.1.6的部署及配置

是否 次數 tool 至少 hits 檢查 rep nat list web緩存服務器varnish-4.1.6的部署及配置詳解 1.安裝varnish4.1.6安裝依賴 yum install -y autoconf automake jemalloc-devel li

python模塊之XlsxWriter

som hnu ima conf all 合並單元格 stack from pen Xlsx是python用來構造xlsx文件的模塊,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超鏈接。 可以完成xlsx文件的自動化

Python中time模塊(轉)

才有 border 格式化時間 sta 程序 格式化字符串 夏令時 oca import 在平常的代碼中,我們常常需要與時間打交道。在Python中,與時間處理有關的模塊就包括:time,datetime以及calendar。這篇文章,主要講解time模塊。 在開始之前,首

排序算法(四)堆排序的Python實現及算法

python 堆排序 一、前言如果需要Java版本的堆排序或者堆排序的基礎知識——樹的概念,請參看本人博文《排序算法(二)堆排序》關於選擇排序的問題選擇排序最大的問題,就是不能知道待排序數據是否已經有序,比較了所有數據也沒有在比較中確定數據的順序。堆排序對簡單選擇排序進行了改進。二、準備知識堆:它是一

Python的socket模塊

peek ear gun .py .get cati 如同 cookies django 一、網絡知識的一些介紹 socket 是網絡連接端點。例如當你的Web瀏覽器請求www.jb51.net上的主頁時,你的Web瀏覽器創建一個socket並命令它去連接 www.jb51

Python數據類型

lan 數字 介紹 logs 人生 類型 html art python 人生苦短,我用Python,接下來我們開始數據類型的學習 當你覺得自己要放棄的時候,想想當初為什麽要學習python 一:python數據類型介紹 二:python數據類型之數字 三:python數據

python之sys模塊

自動 print 詳解 .py 當前 std file 調用 需要 sys模塊功能多,我們這裏介紹一些比較實用的功能,相信你會喜歡的,和我一起走進python的模塊吧! sys模塊的常見函數列表 sys.argv: 實現從程序外部向程序傳遞參數。 sys.exit([

Python之print函數

ng-click title com search 寬度 高亮 自由 view mod 輸出的 print 函數總結: 1. 字符串和數值類型可以直接輸出 [python] view plain copy >>> print(1)

Python內置函數——總結篇

模塊 可叠代對象 4.5 sea eva 映射 ring @property post 2個多月來,將3.5版本中的68個內置函數,按順序逐個進行了自認為詳細的解析,現在是時候進行個總結了。為了方便記憶,將這些內置函數進行了如下分類: 數學運算(7個)

使用阿裏雲主機離線部署CDH步驟

require 系統初始 grant 內網ip 初始 cli dir 雲主機 rhel4 一、Linux文件系統準備 1. 拍攝快照 登錄阿裏雲控制臺,拍攝快照,註意有幾個關鍵點盡量拍攝快照,系統初始狀態、CM環境準備完成、CM安裝完成、CDH安裝完成。

Python之tuple元組

for highlight top app stop 取出 brush pos 元素 元組:有序,一級元素不可以修改、不能被增加或刪除(元組是可叠代對象) 一般寫法括號內最後面加個英文逗號用來區分: test = (,) test1 = (11,22,) 例:

python引用和對象

同時 hang () 引用值 垃圾回收 列表項 實驗 就是 因此 python引用和對象詳解 @[馬克飛象] python中變量名和對象是分離的 例子 1: a = 1 這是一個簡單的賦值語句,整數 1 為一個對象,a 是一個引用,利用賦值語句,引用a指向了對象1. 例

python中常用模塊

digest cal alt a* bytes byte code 十六 負責 log模塊的講解 1 Python 使用logging模塊記錄日誌涉及四個主要類,使用官方文檔中的概括最為合適: 2 3 logger提供了應用程序可以直接使用的接口API;

三:python 對象類型一:數字(上)

結果 dom 運行 精度 升級 方法 函數 般的 代碼 一:python 的數字類型: a)整數和浮點數 b)復數 c)固定精度的十進制數 d)有理分數 e)集合 f)布爾類型 g)無窮的整數精度 h)各種數字內置函數和模塊 二:各種數字類型的詳解   1,數字常量:pyt

Python實戰之unittest使用

python unittest 一 unittest是什麽?unittest是python內置的單元測試框架,具備編寫用例、組織用例、執行用例、輸出報告等自動化框架的條件。 使用unittest前需要了解該框架的五個概念: 即test case,test suite,testLoader,test r

Python 正則表達式與 re 模塊的使用

1.3 個數 介紹 date 點號 name 檢查 模塊 大小寫 強烈推薦正則表達式在線測試網站: https://regex101.com/ 1. 標準庫模塊 re 更多詳情參考官方文檔: https://docs.python.org/3/howto/rege