Fabric并行任务未绑定到特定集合

1 投票
1 回答
581 浏览
提问于 2025-04-16 20:56

我想找个方法,用多次运行(multirun)来定义一个任务,这个任务会在命令行中指定的一组服务器上运行(通过角色或主机来定义)。

到目前为止,我看到的所有例子都是这样做的:

env('app-nodes').multirun('some command')

但是我不想把角色写死在代码里。我想用 fab -R ... 来定义它。那我有什么选择呢?

我本来期待这样可以工作:

@task
def some_task():
    env().multirun('some command')

但这会报错 TypeError: '_AttributeDict' object is not callable

1 个回答

0

你可能想要使用任务参数,然后把它传递给 tav 的 env() 方法,这样做会比较好:

http://docs.fabfile.org/en/1.1.1/usage/fab.html#per-task-arguments

另外,你为什么会觉得空的主机列表可以正常工作呢?

撰写回答