2017-02-07 53 views
2

有什麼辦法阻止處理程序運行?我試圖添加標籤並使用「--skip-tags」,但它不起作用。禁用處理程序運行

我可以添加下一個角色變量reload_service: true並使用它,但我已經開始使用標籤,它們很適合重新運行部分角色。

處理程序通常用於重新啓動服務,我想在不啓動服務的情況下運行此角色,而不更改角色變量以覆蓋下一個案例。

我使用ansible 2.1.2.0

測試用例:

mkdir -p test/role/handlers test/role/tasks cd test echo -ne '---\n - command: "echo Test"\n notify: restart\n' > role/tasks/main.yml echo -ne '---\n- name: restart\n command: "echo Handler"\n tags: [handlers]\n' > role/handlers/main.yml echo -ne '---\n- hosts: localhost\n gather_facts: false\n roles:\n - role\n' > play.yml ansible-playbook play.yml --skip-tags handlers

+0

這是不可理解:「*我想不跑不改變的作用只是爲了掩飾一個case開始服務這個角色*。」 – techraf

+0

@techraf我的意思是,我不希望改變的變量,最好我不應該有像rsyslog_add_service:true這樣的任何條件變量,但我只是使用更容易控制的標籤。 – alkuzad

+0

但是你不能使用標籤。什麼是問題?你還沒有解釋那句話的意思 - 我看不出有什麼聯繫。 – techraf

回答

3

目前內Ansible沒有變量,它可以讓你測試哪些代碼在運行時被指定。

正如您發現的那樣,處理程序不管分配的標籤而運行。文檔沒有明確說明這是一個錯誤還是意圖行爲。

某些選項:

  • 另一個變量添加到任務並使用這個,因爲處理程序仍然可以在「其中:」條件子句。

  • 讓處理程序包含另一個文件,其中包含操作和標籤分配。該文件將始終包含在內,但標籤會使操作有條件。

  • 在任務中有一個標記動作,然後爲該處理程序設置一個局部變量。此任務中的轉換將允許標籤在運行時仍然使用。

+0

是的,這些只是有效的選擇,但我很失望,如何分裂ansible,我只是轉向鹽。 – alkuzad

相關問題