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