我对fabric还很陌生,我正在尝试创建一个脚本来启动三个不同的服务器和一个客户机,但它似乎在第一个任务时就停止了。这是我的密码:
env.user='userX'
env.roledefs = {
'client':['HostC'],
'id 0':['Host0'],
'id 1':['Host1'],
'id 2':['Host2']
}
def go():
execute(serve0)
execute(serve1)
execute(serve2)
execute(req)
@roles('id 0')
def serve0():
run('./go/bin/kvsd -id 0 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')
@roles('id 1')
def serve1():
run('./go/bin/kvsd -id 1 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')
@roles('id 2')
def serve2():
run('./go/bin/kvsd -id 2 -config-file ~/go/src/github.com/userX/kvs/kvsd/conf/config.ini')
@roles('client')
def req():
run('./go/bin/kvsc -config-file ~/go/src/github.com/userX/kvs/kvsc/config.ini')
我使用“fab go”运行它,但这只会导致它执行serve0,它不会在没有中断的情况下停止,因此会阻止任何其他任务的执行。有没有办法让它们并行运行?另外,有没有更好的方法将spesific任务与spesific主机联系起来?你知道吗
将
@parallel
装饰器添加到函数中,它们将自动并行运行。更多详细信息:http://docs.fabfile.org/en/1.10/usage/parallel.html从cli调用fabric以标识要使用的主机时,请使用
-H
。在任务中,您可以检查env
字典,也可以使用@hosts
装饰器指定在何处运行的内容。更多信息:http://docs.fabfile.org/en/1.10/usage/execution.html相关问题 更多 >
编程相关推荐