Python3中詳解fabfile的編寫(xiě)
fab命令好似結(jié)合我們編寫(xiě)的fabfile.py(其它文件名必須添加-f filename應(yīng)用)來(lái)搭配使用的,部分命令行參數(shù)可以通過(guò)相應(yīng)的方法來(lái)替代,使之更加靈活,例如"-H 192.168.56.133,192.168.56.134",我們可以通過(guò)定義env.hosts來(lái)實(shí)現(xiàn),如"env.hosts=['192.168.56.133,192.168.56.134']"。fabfile的主體由多個(gè)自定義的任務(wù)函數(shù)組成,不同任務(wù)實(shí)現(xiàn)不同的操作邏輯。
全局屬性設(shè)定
env對(duì)象的作用是定義fabfile的全局設(shè)定,支持多個(gè)屬性,包含目標(biāo)主機(jī)、用戶名、密碼、等角色,各屬性說(shuō)明如下:
- evn.host:定義目標(biāo)主機(jī),可以用IP或主機(jī)名表示,以Python的列表形式定義,如evn.hosts['192.168.56.133','192.168.56.134']。
- env.exclude_hosts:排除指定主機(jī),如env.exclude_hosts=['192.168.56.133']。
- env.user:定義用戶名,如env.user="root"。
- env.port:定義目標(biāo)主機(jī)端口,默認(rèn)為22,如env.port="22"。
- env.password:定義密碼,如env.password='1234567'。
- env.passwords:與password功能一樣,區(qū)別在于不同主機(jī)不同密碼的應(yīng)用場(chǎng)景,需要注意的是,配置passwords是需配置用戶、主機(jī)、端口等信息,如:
env.passwords = { 'root@192.168.56.131:22':'1234567', 'root@192.168.56.132:22':'1234567', 'root@192.168.56.133:22':'1234567', 'root@192.168.56.134:22':'1234567' }
- env.gateway:定義網(wǎng)關(guān)(中轉(zhuǎn)、堡壘機(jī))IP,如env.gateway = '192.168.56.1'。
- env.deploy_release_dir:自定義全局變量,格式:env.+"變量名稱(chēng)",如env.deploy_release_dir、env.age、env.sex等。
- env.roledefs:定義角色分組,比如web組與db組主機(jī)區(qū)分開(kāi)來(lái),定義如下:
env.roledefs = { 'webservers':['192.168.56.131','192.168.56.132','192.168.56.133'], 'dbserver':['192.168.56.134','192.168.56.135'] }
引用時(shí)使用Python修飾符的形式進(jìn)行,角色修飾符下面的任務(wù)函數(shù)為其作用域,下面來(lái)看一個(gè)示例:
@roles('webservers') def webtask(): run('/etc/init.d/nginx start') @roles('dbservers') def dbtask(): run('/etc/init.d/mysql start') @roles('webservers','dbservers') def pubclitasj(): run('uptime') def deploy(): execute(webtask) execute(dbtask) execute(pubclitask)
在命令執(zhí)行fab deploy就可以實(shí)現(xiàn)不同角色執(zhí)行不同的任務(wù)函數(shù)了。
常用API
Fabric提供了一組簡(jiǎn)單但功能強(qiáng)大的fabric.api命令集,簡(jiǎn)單地調(diào)用這些API就能完成大部分應(yīng)用場(chǎng)景需求。Fabric常用方法及說(shuō)明如下:
- local:執(zhí)行本地命令,如:local('uname -s');
- lcd:切換本地目錄,如:lcd('/home');
- cd:切換遠(yuǎn)程目錄,如:cd('/data/logs');
- run:執(zhí)行遠(yuǎn)程命令,如:run('free -m');
- sudo:sudo方式執(zhí)行遠(yuǎn)程命令,如:sudo('/etc/init.d/httpd start');
- put:上傳本地文件到遠(yuǎn)程主機(jī),如:put('/home/user.info','/data/user.info');
- prompt:獲得用戶輸入信息,如:prompt('please input user password:');
- confirm:獲得提示信息確認(rèn),如:confirm("Tests failed. Continue[Y/N]?");
- reboot:重啟遠(yuǎn)程主機(jī),如:reboot();
- @task:函數(shù)修飾符,標(biāo)識(shí)的函數(shù)為fab可調(diào)用的,非標(biāo)記對(duì)fab不可見(jiàn),純業(yè)務(wù)邏輯;
- runs_once:函數(shù)修復(fù)符,標(biāo)識(shí)的函數(shù)只會(huì)執(zhí)行一次,不受多臺(tái)主機(jī)影響。
- 淺談Python2、Python3相對(duì)路徑、絕對(duì)路徑導(dǎo)入方法
- python3讀取csv和xlsx文件的實(shí)例
- Python3導(dǎo)入CSV文件的實(shí)例(跟Python2有些許的不同)
- 詳解python3中tkinter知識(shí)點(diǎn)
- Python3用tkinter和PIL實(shí)現(xiàn)看圖工具
- Python3.4 tkinter,PIL圖片轉(zhuǎn)換
- Python3實(shí)現(xiàn)轉(zhuǎn)換Image圖片格式
- python3實(shí)現(xiàn)域名查詢和whois查詢功能
- python3實(shí)現(xiàn)windows下同名進(jìn)程監(jiān)控
- python3實(shí)現(xiàn)磁盤(pán)空間監(jiān)控
- python3監(jiān)控CentOS磁盤(pán)空間腳本
相關(guān)文章
Python實(shí)現(xiàn)簡(jiǎn)易計(jì)算器的示例代碼
Tkinter作為 Python GUI 開(kāi)發(fā)工具之一,它具有 GUI 軟件包的必備的常用功能。本文就將利用Tkinter編寫(xiě)簡(jiǎn)易的計(jì)算器,感興趣的可以了解一下2022-11-11Python使用Appium在移動(dòng)端抓取微博數(shù)據(jù)的實(shí)現(xiàn)
Appium是移動(dòng)端的自動(dòng)化測(cè)試工具,讀者可以類(lèi)比為PC端的selenium。通過(guò)它,我們可以驅(qū)動(dòng)App完成自動(dòng)化的一系列操作,同樣也可以爬取需要的內(nèi)容,本文就來(lái)介紹一下如何在移動(dòng)端抓取微博數(shù)據(jù),感興趣的可以了解一下2021-08-08pandas中關(guān)于apply+lambda的應(yīng)用
本文主要介紹了pandas中關(guān)于apply+lambda的應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、??看翱?、子窗口
這篇文章主要介紹了PyQT5實(shí)現(xiàn)選項(xiàng)卡窗口、堆棧窗口、??看翱?、子窗口,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04節(jié)日快樂(lè)! Python畫(huà)一棵圣誕樹(shù)送給你
節(jié)日快樂(lè)!這篇文章主要介紹了如何使用Python畫(huà)一棵圣誕樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例
今天小編就為大家分享一篇python將秒數(shù)轉(zhuǎn)化為時(shí)間格式的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09