![](/img/trans.png)
[英]How to run same task in parallel on multiple hosts with different parameters using fabric?
[英]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.