角色中是否可以有「崗位任務」?即角色中定義的任務將在遊戲結束時運行?
例如,我有一個common
角色,大多數其他角色都依賴該角色。該common
角色提供了一些基本內容以避免重複,例如對 yum 配置的調整等。
我注意到劇本有post_tasks
。我想知道是否可以在角色本身中定義崗位任務?
更新: 引用Ansible 文檔:
處理程序:根據變化運行操作
…
這些「通知」操作在劇本中每個任務區塊的結尾觸發,即使被多個不同的任務通知,也只會觸發一次。
…
角色稍後描述。值得指出的是,處理程序是在「pre_tasks」、「roles」、「tasks」和「post_tasks」部分之間自動處理的。
…
顯然,文件的這一部分要么是誤導性的,要么是完全錯誤的(=其中存在錯誤)。處理程序似乎已被解僱每場比賽結束時,在tasks
和之間post_tasks
,如以下簡單測試所示:
- name: Handlers test
hosts: all
gather_facts: no
roles:
- some-role
# some-role depends on common
tasks:
- name: This a task
shell: /bin/true
post_tasks:
- name: This is a post task
shell: /bin/true
以及共同的角色:
# tasks/main.yml
- name: Registering handler
shell: /bin/true
notify: this is a handler
#handlers/main.yml
- name: this is a handler
shell: /bin/true
(由於沒有人提供答案,我無法接受答案,但感覺用評論中的提示回答我自己的問題是不對的......)
答案1
此行為是由 Ansible 1.9.x 中的錯誤引起的,目前在此處進行追蹤:https://github.com/ansible/ansible/issues/12575