處理程序:根據變化運行操作

處理程序:根據變化運行操作

角色中是否可以有「崗位任務」?即角色中定義的任務將在遊戲結束時運行?

例如,我有一個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

相關內容