在我的fabric腳本中,我遇到以下問題。我有一個稱爲autodeploy的主要任務。在這個任務中,我有一些任務,我只想在本地運行一次。所有遠程任務應該在主機列表的每個主機上運行。如何讓一些Fabric任務只在本地運行一次,而其他Fabric任務在所有主機上運行
env.roledefs ={
'testing': ['t-server-01', 't-server-02']
'staging': ['s-server-01', 's-server-02']
'live': ['l-server-01', 'l-server-02']
}
def localtask1():
# download artifact
def localtask2():
# cleanup locally
def remotetask():
# deploy artifact to all hosts
def autodeploy():
localtask1() # run this task only once, locally
remotetask() # run this task on all hosts
localtask2() # run this task only once
該通話如下。我想將角色作爲屬性傳遞給角色。
fab -R test autodeploy
我改變了代碼在上面的問題,所以你可以看到我的嘗試。也許我錯過了一些事情,因爲它似乎沒有工作 –
你做了倒退。執行(remotetask)是你真正需要的。我會編輯我的答案,使其更清楚。 – Morgan
因爲我想將角色作爲屬性傳遞,所以我沒有看到此解決方案適用於我。如果我把@roles('testing')放在一個任務上面,它會一直運行這個任務,並且相應的宿主列表 –