角色中可以有“后期任务”吗?即在角色中定义的任务,将在剧情结束时运行?
例如,我有一个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