0 Fabric簡明教程 jopen 9年前發布 | 58K 次閱讀 Fabric Python開發 Hello 安裝 編寫腳本 運行腳本 </ul> </li> 常見命令 常用函數 錯誤處理 角色定義 簡單實例 </ul> </div> </nav> Fabric是一個Python(2.5-2.7)的支持庫和命令行工具,用于流水線式執行SSH,以實現應用部署或系統管理。詳情查看官方網站以及官方文檔。 Hello 安裝 pip install fabric 編寫腳本 vim fabfile.py def hello(): print("Hello world!")</pre> 運行腳本 fab hello 常見命令 fab --help fab -l # 顯示可用的task(命令) fab -H # 指定host,支持多個host,以逗號分開 fab -R # 指定role,支持多個role fab -P # 并發數,默認串行 fab -w # warn_only,默認遇到異常直接abort退出 fab -f # 指定入口文件,默認fabfile.py 常用函數 lcd('/tmp') # 切換本地目錄 cd('/tmp') # 切換遠程目錄 local('pwd') # 執行本地命令 run('uname -a') # 執行遠程命令 sudo('/etc/init.d/nginx start') # 執行遠程sudo</pre> 錯誤處理 def test(): with settings(warn_only=True): result = local('./manage.py test my_app', capture=True) if result.failed and not confirm("Tests failed. Continue anyway?"): abort("Aborting at user request.") 角色定義 host1 = 'user@192.168.1.1:22' host2 = 'user@192.168.1.2:22' host3 = 'user@192.168.1.3:22' env.hosts = [ host1, host2, host3 ] env.passwords = { host1: "pwd_of_host1", host2: "pwd_of_host2", host3: "pwd_of_host3", }</pre> 或者 env.roledefs = { 'nginx_user': [host1, host2], 'mysql_user': [host3] } env.passwords = { host1: "pwd_of_host1", host2: "pwd_of_host2", host3: "pwd_of_host3", }</pre> 簡單實例 from future import with_statement from fabric.api import * from fabric.contrib.console import confirm host1 = 'user@192.168.1.1:22' host2 = 'user@192.168.1.2:22' host3 = 'user@192.168.1.3:22' env.passwords = { host1: "pwd_of_host1", host2: "pwd_of_host2", host3: "pwd_of_host3", } env.roledefs = { 'nginx_user': [host1, host2], 'mysql_user': [host3] } def test(): with settings(warn_only=True): result = local('./manage.py test my_app', capture=True) print("some processings") if result.failed and not confirm("Tests failed. Continue anyway?"): abort("Aborting at user request.") print red("some error") def deploy(): test() local("git add -p && git commit") local("git push") @task @parallel @roles('nginx') def nginx_start(): sudo('/etc/init.d/nginx start') @task @serial @roles('nginx') def nginx_stop(): sudo('/etc/init.d/nginx stop') @task @parallel(pool_size=5) @roles('mysql') def mysql_start() sudo('/etc/init.d/mysql start')</pre>來自:http://blog.willwong.cc/posts/fabricjian-ming-jiao-cheng.html#jtss-tsina 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享! 本文地址:http://www.baiduhome.net/lib/view/open1419575745546.html Fabric Python開發 相關經驗 Fabric簡明教程 Sed簡明教程 Git簡明教程 Vim 簡明教程 ANT簡明教程 相關資訊 使用 Vagrant 和 Fabric 用于集成測試 用 Google App Engine 開發 Go 語言應用的簡明教程 GridGain In-Memory Data Fabric 7.5 發布 簡明 Vim 練級攻略 簡明解釋算法中的大O符號 相關文檔 JNDI 簡明教程 UML 簡明教程 VIM 簡明教程 SVN (簡明教程) MATLAB 7 簡明教程 JBPM 教程 Enterprise Architect 教程 EA教程 TCL 教程(中文) WCF教程 C# 目錄 sesese色