2013-06-27 60 views
1

用更少的主機織物嵌套方法我有撥打裝飾

@roles('production') 
def submethod(): 
    run('service restart') 


@roles('all') 
def deploy(): 
    put('somefile.conf') 
    submethod() 

我叫部署(),但後來所有服務將重新啓動,在所有主機,什麼是完成這件事的最佳方式?看起來@roles('production')不起作用...

非常感謝。

回答

1

如果你想從另一個調用任務的任務,你應該使用execute

def submethod(): 
    run('service restart') 


@roles('all') 
def deploy(): 
    put('somefile.conf') 
    execute(submethod, roles=['production']) 

希望有所幫助。

+0

這種方式'服務重啓'是在正確的主機上執行的,但是20次,與len(@roles('all')) – avances123

+0

我可以使用@runs_once相同的次數,但是它在生產中執行一次我想)但可能在迭代時,我把somefile.conf放在其他主機上。我的意思是在文件在生產中被實際複製之前重新啓動服務。 – avances123