是否可以在同一任务方法中执行本地和远程任务?
例如,我想做类似以下的事情:@fabric.api.task
def Deploy():
PrepareDeploy()
PushDeploy()
execute(Extract())
execute(Start())
PrepareDeploy
和PushDeploy
是本地任务(仅通过fabric.api.local()
方法在本地执行):
@fabric.api.task
@fabric.decorators.runs_once
def PrepareDeploy():
@fabric.api.task
@fabric.decorators.runs_once
def PushDeploy():
Extract
/ Start
是应该在远程主机上运行的方法:
@fabric.api.task
def Extract():
@fabric.api.task
def Start():
然而,当我尝试fab Deploy
时,我会得到类似的结果:
[remote1.serv.com] Executing task 'Deploy'
[localhost] local: find . -name "*.java" > sources.txt
...
第一行对我来说似乎不对(实际上会导致错误)。
答案 0 :(得分:0)
您可以生成新任务并定义应运行的主机,例如 - 如何创建所有主机的rabbitmq,并使用相同的erlang cookie配置puppet。
参见第114行 - 特定主机上的任务执行。
https://gist.github.com/nvtkaszpir/17d2e2180771abd93c46
我希望这会有所帮助。