摘要:環(huán)境服務器目標服務器組一共臺服務器需求我需要把我服務器上的某些文件同步到集群,但是我又需要并發(fā)執(zhí)行,而不是通過循環(huán)或者是串行的方式。
環(huán)境:
fabric 服務器:10.10.1.1
目標服務器組:test.com (10.10.1.2-21)一共 20 臺服務器
需求:
我需要把我 fabric 服務器上的某些文件同步到 test.com 集群,但是我又需要并發(fā)執(zhí)行,而不是通過 for 循環(huán)或者是串行的方式。
先直接上代碼再針對性的解釋:
#!/usr/bin/python env #-*- coding: utf-8 -*- from fabric.api import env from fabric.api import run from fabric.api import put from fabric.api import execute from fabric.api import roles from fabric.api import parallel from fabric.api import cd from fabric.api import lcd from fabric.api import task from fabric.api import local from fabric.api import settings from fabric.api import hide from fabric.colors import red ### 使輸出有色彩 from fabric.colors import green ### 下面這個角色在我實際的使用中,我是不需要填寫的,因為我實際使用是從 CMDB 動態(tài)獲取集群的服務器列表的。為了測試,所以弄了下面的 env.user = "test" env.password = "test" env.roledefs = { "test.com":["10.10.1.2","10.10.1.3","10.10.1.4","10.10.1.5",......],# 省略下, } ######### reload data and rsync data########### def rsync_test(host): ### 傳入 host 主機 IP 參數(shù) with settings(hide("running","stdout"), warn_only=True): ## hide 是表示不輸入信息到 sreen,可以寫 "everything","stderr","running" 等等 with lcd("/tmp/"): result = local("rsync -Pav test "%s":/tmp/" % host) ### 根據(jù)不同的主機 rsync 到不同的主機服務器 if result.return_code == 0: ##可以根據(jù)上面數(shù)據(jù)是否成功執(zhí)行下一步操作。 print (green("-------------------------")) print (red("*******主機 %s 同步數(shù)據(jù)成功******" % host)) print (green("-------------------------")) else: print (green("-------------------------")) print (red("*******主機 %s 同步數(shù)據(jù)失敗******" % host)) print (green("-------------------------")) @task @roles("test.com") @parallel(pool_size=16) def execute_rsync(): execute(rsync_test, env.host) ### 讀取 @roles("test.com") 里面的主機,并把 host 傳遞給 rsync_test 函數(shù),并且 @parallel(pool_size=16) 來并發(fā) @roles("test.com") @parallel(pool_size=5) def echo_hello(): run("echo "hello world!"")
執(zhí)行任務:
fab execute_rsync
輸出是:
#### 省略抹除了一些信息 同步數(shù)據(jù)成功****** ------------------------- Done. real 0m1.263s user 0m0.793s sys 0m0.689s
如果沒有使用并發(fā)的話,執(zhí)行時間為:
------------------------- Done. real 0m3.680s user 0m0.664s sys 0m0.512s
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/37483.html
摘要:是基于實現(xiàn)的遠程安全連接,支持認證及密鑰方法。利用函數(shù)發(fā)送到,通過函數(shù)獲取回顯。如下全局屬性設定對象的作用是定義的全局設定,支持多個屬性及自定義屬性。相比確實簡化了不少。出現(xiàn)異常時,發(fā)出警告,繼續(xù)執(zhí)行,不要終止。 paramiko paramiko是基于Python實現(xiàn)的SSH2遠程安全連接,支持認證及密鑰方法??梢詫崿F(xiàn)遠程命令執(zhí)行,文件傳輸,中間SSH代理等功能,相對于Pexpect...
摘要:作為系列的新篇章,我選擇從超級賬本的開始。為什么選擇超級賬本作為起點我在之前的文章中曾說過會從超級賬本入手開始區(qū)塊鏈的學習和實踐,同時也給出了個人的理由。檢查事務提議的響應。為了降低區(qū)塊鏈應用的開發(fā)難度,超級賬本項目又引入了。 本著以教帶學,Learning by Doing的想法,我于上周加入了Bob組織的HiBlock區(qū)塊鏈技術布道群。這個群可不太好混,群規(guī)要求每個成員必需每周有輸...
摘要:背景在下安裝的時候,總是安裝不成功,在執(zhí)行命令的時候,總是會拋出錯誤。解決方案安裝替代系統(tǒng)默認的再安裝包系統(tǒng)默認自帶的版本是下載安裝包在的官網(wǎng)下載頁面下載的源碼包。在下安裝就省事很多。附上執(zhí)行簡單部署的一份代碼例子,僅供參考。 背景 在Centos6.3下安裝fabric的時候,總是安裝不成功,在執(zhí)行fab命令的時候,總是會拋出錯誤。 Traceback (most recent ...
摘要:我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。,一種在以太坊開發(fā)人員中流行的新的簡單編程語言,因為它是用于開發(fā)以太坊智能合約的語言。它是全球至少萬開發(fā)人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。區(qū)塊鏈技術處于初期階段,然而這種顛覆性技術已經(jīng)成功地風靡全球,并且最近經(jīng)歷了一場與眾不同的繁榮。由于許多...
閱讀 3680·2020-12-03 17:42
閱讀 2830·2019-08-30 15:54
閱讀 2310·2019-08-30 15:44
閱讀 628·2019-08-30 14:08
閱讀 1029·2019-08-30 14:00
閱讀 1158·2019-08-30 13:46
閱讀 2849·2019-08-29 18:33
閱讀 3131·2019-08-29 14:11