我有一个fab文件如下:
@hosts('host1')
def host1_deploy():
"""Some logic that is specific to deploying to host1"""
@hosts('host2')
def host2_deploy():
"""Some logic that is specific to deploying to host2"""
def deploy():
""""Deploy to both hosts, each using its own logic"""
host1_deploy()
host2_deploy()
我想这样做
fab deploy
让它等于
fab host1_deploy host2_deploy
换句话说,运行每个子任务,并为每个子任务使用它指定的主机列表。但是,这不起作用。相反,deploy()任务需要它自己的主机列表,它将把这些主机列表提交给它的所有子任务。
这里有没有方法更新deploy()任务,以便它在保持子任务单独运行的同时执行我想要的操作?
可能有更好的方法来处理它,但是可以将两个主机都传递给deploy(),然后在host1_deploy()和host2_deploy()中检查env.host:
这是蹩脚的,但它在织物1.1.2中起作用
这是我的测试代码:
从Fabric 1.3开始,
execute
助手现在就可以执行此操作。这里有文档:Intelligently executing tasks with execute。下面是他们使用的示例:
然后从另一个任务运行
migrate
和web
:这将尊重这些任务所具有的角色和主机列表。
相关问题 更多 >
编程相关推荐