2016-06-07 106 views
0

demo.py如何使用fabric在具有不同參數的多臺主機上並行運行相同的任務?

from fabric.api import env, run,execute 

env.hosts = ['10.1.1.100','10.1.1.200'] 
env.remotePath = {'10.1.1.100':'/home','10.1.1.200':'/var'} 
env.parallel=True 

def mytask(remotePath): 
    run('ls %s' % remotePath) 

def test(): 
    execute(mytask,env.remotePath[env.host]) 

晶圓廠-f demo.py測試使用@parallel裝飾

我想在10.1.1.100執行命令ls /home,和ls /var並行地在10.1.1.200,是否有任何如何讓它成爲可能?

回答

0

使用host_string獲取當前主機,然後獲取您要使用的命令/參數。

@parallel 
def mytask(): 
    host_ip = env.host_string 
    remote_path = env.remotePath[host_ip] 
    run('ls %s' % remote_path) 

根據面料的API文檔:host_string

定義當前用戶/主機/端口,光纖將連接到時候 執行運行,放等等。這由fab在通過先前設置的主機列表重複 時設置,並且當 使用Fabric作爲庫時也可以手動設置。

希望這會有所幫助:)

相關問題