fabric實現遠端操作和部署

wklken發表於2015-12-22

fabric

title是開發,但是同時要幹開發測試還有運維的活 (o(╯□╰)o)

近期接手越來越多的東西,釋出和運維的工作相當機械,加上頻率還蠻高,導致時間浪費還是優點多。

修復bug什麼的,測試,提交版本庫(2分鐘),ssh到測試環境pull部署(2分鐘),rsync到線上機器A,B,C,D,E(1分鐘),分別ssh到ABCDE五臺機器,逐一重啟(8-10分鐘) = 13-15分鐘

其中鬱悶的是,每次操作都是相同的,命令一樣,要命的是在多個機器上,很難在本機一個指令碼搞定,主要時間都浪費在ssh,敲命令上了,寫成指令碼,完全可以一鍵執行,花兩分鐘看下執行結果

直到,發現了fabric這貨

官方文件 入口

作用

很強大的工具

可以將自動化部署或者多機操作的命令固化到一個指令碼里

和某些運維工具很像,用它主要是因為,python…..

簡單好用易上手

當然,shell各種命令組合起來也可以,上古神器和現代兵器的區別

環境配置

在本機和目標機器安裝對應包(注意,都要有)

目前是1.8版本

安裝完後,可以檢視是否安裝成功

裝完之後,可以瀏覽下官方文件

然後,可以動手了

hello world

先進行本機簡單操作,有一個初步認識,例子來源與官網

新建一個py指令碼: fabfile.py

命令列執行:

注意,這裡可以不用fabfile作為檔名,但是在執行時需指定檔案

帶引數:

修改fabfile.py指令碼:

執行

執行本機操作

簡單的本地操作:

結果:

實戰開始:

假設,你每天要提交一份配置檔案settings.py到版本庫(這裡沒有考慮衝突的情況)

如果是手工操作:

也就是說,這幾個命令你每天都要手動敲一次,所謂daily job,就是每天都要重複的,機械化的工作,讓我們看看用fabric怎麼實現一鍵搞定:(其實用shell指令碼可以直接搞定,但是fab的優勢不是在這裡,這裡主要位後面本地+遠端操作做準備,畢竟兩個地方的操作寫一種指令碼便於維護)

混搭整合遠端操作

這時候,假設,你要到機器A的/home/ken/project對應專案目錄把配置檔案更新下來

然後,執行之:

注意,如果不宣告env.password,執行到對應機器時會跳出要求輸入密碼的互動

多伺服器混搭

操作多個伺服器,需要配置多個host

結果:

擴充套件

1.顏色

可以列印顏色,在檢視操作結果資訊的時候更為醒目和方便

2.錯誤和異常

關於錯誤處理

預設,一組命令,上一個命令執行失敗後,不會接著往下執行

失敗後也可以進行不一樣的處理, 文件

目前沒用到,後續用到再看了

3.密碼管理

文件

更好的密碼管理方式,哥比較土,沒打通,主要是伺服器列表變化頻繁,我的處理方式是:

3.1 host,user,port,password配置列表,所有的都寫在一個檔案

或者直接搞到指令碼里,當然這個更……..

3.2 根據key解析成map巢狀,放到deploy中

另外命令其實也可以固化成一個cmds列表的…..

粗略就用到這些,後續有更多需求的時候再去撈文件了,話說文件裡好東西真多,就是太多了,看了暈。。。

TODO:


update log

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

fabric實現遠端操作和部署 fabric實現遠端操作和部署

相關文章