繁体   English   中英

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

[英]How to run same task in parallel on multiple hosts with different parameters using fabric?

我是Fabric的新手,我打算用不同的主机(也许)和不同的参数运行任务。 然后我设定主机清单

env.hosts = ['host1', 'host1', 'host2', 'host3']
env.passwords = {
    'host1:22': 'password1',
    'host1:22': 'password1',
    'host2:22': 'password2',
    'host3:22': 'password3'
}

我使用相同的参数并行运行任务,只有三个输出,也许在env配置了相同的主机和密码。 实际上分配给任务的每个参数都不同,但是我只能通过在shell中输入fab function:parameter来分配相同的参数。
那么我可以像env.hosts或env.passwords一样配置参数,也许是这样吗?

env.parameters = ['para1', 'para2', 'para3', 'para4']  

谢谢

列表的set()仅由3个不同的主机组成。 因此,您只有3次运行命令。 Fabric重复数据删除主机列表会自动出现。

如果要更改此设置,则可能需要开始使用execute()函数。 是文档中有关此功能的部分。

您想如何使用它的一个例子是这样的

env.hosts = ['host1', 'host1', 'host2', 'host3']
env.passwords = {
    'host1:22': 'password1',
    'host1:22': 'password1',
    'host2:22': 'password2',
    'host3:22': 'password3'
}
env.parameters = ['para1', 'para2', 'para3', 'para4']  

def bar(arg):
    #do some work with arg

def foo():
    for index, host in enumerate(env.hosts):
        execute(bar, env.parameters[index] hosts=host)

暂无
暂无

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

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