1
我有一個任務,我偶爾會喜歡在單個主機上運行(用於金絲雀測試部署)的@roles
。如何僅在單個主機上運行@角色裝飾的結構任務
from fabric.api import *
env.roledefs = {
'web-workers': ['[email protected]', '[email protected]'],
'some-other-role': ['[email protected]'],
}
@task
@roles('web-workers')
def bogomips():
run('uptime')
docs for @roles
的規定:
...在命令行上禁止超馳,my_func,並將對將列出[中的作用]的主機來執行...
但我不能得到這裏提到的「覆蓋」功能工作...我試過了:
$ fab bogomips -H [email protected]
$ fab bogomips -R some-other-role
但它總是對裝飾者提到的整個角色執行...
我在這裏錯過了什麼?我如何覆蓋運行修飾任務的位置?
對於它的價值,我遇到了同樣的行爲。當一個任務用角色('...')裝飾時,似乎忽略了--roles'標誌。例如,用'--roles = NOT_A_ROLE'試試你的代碼,它應該沒有任何錯誤。從任務中刪除@roles('...')裝飾器,它會拋出一個錯誤(角色不存在)。但至少角色標誌似乎在這種情況下工作。絕對不是文檔描述的行爲。 – YellowShark