역할에 "사후 작업"이 있을 수 있나요? 즉, 연극이 끝날 때 실행되는 역할에 정의된 작업인가요?
예를 들어, 나에게는 common
대부분의 다른 역할이 의존하는 역할이 있습니다. 이 common
역할은 반복을 피하기 위해 yum 구성 조정 등과 같은 몇 가지 기본 사항을 제공합니다.
나는 그것을 알아 차렸다플레이북에는post_tasks
. 역할 자체에서 사후 작업을 정의하는 것이 가능한지 궁금합니다.
업데이트: 인용하면앤서블 문서:
핸들러: 변경 시 작업 실행
...
이러한 '알림' 작업은 플레이북의 각 작업 블록이 끝날 때 트리거되며 여러 다른 작업에서 알림을 받더라도 한 번만 트리거됩니다.
...
역할은 나중에 설명됩니다. 핸들러는 '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