python fabric模組入門

來源:互聯網
上載者:User

標籤:預設   hosts   下載   continue   files   檔案名稱   環境變數   角色   use   

Fabric 是一個 Python (2.5-2.7) 庫和命令列工具,用來流水線化執行 SSH 以部署應用或系統管理任務。

 

安裝:

pip install fabric

 

首先來一個入門通用demo,hello world。

檔案:hello_world.py

# coding: utf-8def hello():    print ‘Hello world!‘

運行結果:

預設尋找目前的目錄下fabfile.py檔案,若檔案名稱非fabfile.py,則需要使用-f指定檔案。

$ fab -f hello_world.py helloHello world!Done.

 

env(環境變數)對象說明:

env.hosts   #定義目標主機,可以用IP或主機名稱表示,以python的列表形式定義。如env.hosts=[‘192.168.1.21‘,‘192.168.1.22‘]env.exclude_hosts   #排除指定主機,如env.exclude_hosts=[‘192.168.1.21‘]env.user   #定義使用者名稱,如env.user=‘root‘env.port   #定義連接埠,預設為22,如env.port=‘22‘env.password   #定義密碼,如env.password=‘123456‘env.passwords  #定義多個密碼,不同主機對應不同密碼,如:env.passwords = {‘[email protected]:22‘:‘123456‘,‘[email protected]:22‘:‘654321‘}env.gateway   #定義網關(中轉、Bastion Host)IP,如env.gateway=‘192.168.1.23env.roledefs   #定義角色分組,比如web組合db組主機區分開來:env.roledefs = {‘webserver‘:[‘192.168.1.21‘,‘192.168.1.22‘],‘dbserver‘:[‘192.168.1.25‘,‘192.168.1.26‘]}env.deploy_release_dir   #自訂全域變數,格式:env. + ‘變數名稱‘,如env.age,env.sex等

其中roledefs使用demo如下:

env.roledefs = {‘front‘:[‘192.168.1.111‘],‘api‘:[‘192.168.1.112‘]}@roles(‘front‘)def nginx_restart():    run(‘service nginx restart‘)@roles(‘front‘, ‘api‘)def uptime():    run(‘uptime‘)

 

常用API:

local    #執行本地命令,如local(‘uname -s‘)lcd      #切換本地目錄,如lcd(‘/home‘)cd       #切換遠程目錄run     #執行遠程命令sudo   #sudo方式執行遠程命令,如sudo(‘/etc/init.d/httpd start‘)put     #上次本地檔案導遠程主機,如put(‘/home/user.info‘,‘/data/user.info‘)get     #從遠程主機下載檔案到本地,如:get(‘/data/user.info‘,‘/home/user.info‘)prompt  #獲得使用者輸入資訊,如:prompt(‘please input user password:‘)confirm  #獲得提示資訊確認,如:confirm(‘Test failed,Continue[Y/N]?‘)reboot   #重啟遠程主機,如:reboot()@task   #函數修飾符,標識的函數為fab可調用的,非標記對fab不可見,純商務邏輯@runs_once   #函數修飾符,標識的函數只會執行一次,不受多台主機影響

 

Demo(demo.py):

運行命令:fab -f demo.py list

# coding: utf-8from fabric.api import *env.user = ‘root‘env.roledefs = {        ‘api‘: [‘10.211.55.5:22‘],        }env.passwords = {        ‘[email protected]:22‘: ‘linjianfeng‘,        }def list_files():    run(‘ls -l‘)@task  # 使用@task對fab命令可見,其他沒有使用@task標記的函數對fab命令不可用,fab -f demo.py -l可查看開放函數@roles(‘api‘)def list():    list_files()

 

python fabric模組入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.