我是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']
谢谢
答案 0 :(得分:0)
列表的set()
仅由3个不同的主机组成。所以你只需要运行3次命令。 Fabric会自动重复删除主机列表。
如果您想更改此设置,则可能需要开始使用execute()
功能。 Here是有关此功能的文档中的部分。
您希望如何使用它的示例就像这样
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)