繁体   English   中英

如何使用结构在具有不同参数的多个主机上并行运行同一任务?

[英]How to run the same task in parallel on multiple hosts with different parameters using 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])

fab -f demo.py测试

我想使用@parallel装饰器在10.1.1.100执行ls /home命令,并在10.1.1.200执行ls /var命令,是否有任何方法可以实现?

使用host_string获取当前主机,然后使用要使用的命令/参数。

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

根据Fabric的API文档: host_string

定义当执行运行,放置等操作时,Fabric将连接到的当前用户/主机/端口。 在迭代先前设置的主机列表时,此设置由fab设置;在将Fabric用作库时,也可以手动设置。

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM