Ansible 角色发布任务

Ami*_*iri 6 ansible

是否可以在角色中设置“发布任务”?即在角色中定义的任务,将在戏剧结束时运行?

例如,我有一个common角色,大多数其他角色都依赖于该角色。该common角色提供了一些避免重复的基本内容,例如对 yum 配置的调整等。

我注意到剧本有post_tasks. 我想知道是否可以在角色本身中定义发布任务?


更新: 引用Ansible 文档

处理程序:在更改时运行操作

...

这些“通知”操作在剧本中每个任务块的末尾触发,即使被多个不同的任务通知也只会触发一次。

...

稍后描述角色。值得指出的是,处理程序会在“pre_tasks”、“roles”、“tasks”和“post_tasks”部分之间自动处理。

...

显然,文档的这一部分要么是误导,要么是说谎(=其中有错误)。似乎在每次 play 结束时触发处理程序,在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
Run Code Online (Sandbox Code Playgroud)

以及共同作用:

# 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
Run Code Online (Sandbox Code Playgroud)

(由于没有人提供答案,我无法接受,但感觉用评论中的提示回答我自己的问题并不正确......)

Ale*_*lin 1

此行为是由 Ansible 1.9.x 中的错误引起的,目前在此处跟踪:https: //github.com/ansible/ansible/issues/12575