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