ロールに「ポストタスク」を含めることは可能ですか? つまり、プレイの最後に実行される、ロールで定義されたタスクですか?
たとえば、common
他のほとんどのロールが依存するロールがあります。このcommon
ロールは、yum 構成の調整など、繰り返しを避けるための基本的な機能を提供します。
私は気づいたプレイブックにはpost_tasks
ロール自体にポストタスクを定義することは可能でしょうか?
アップデート: 引用:Ansible ドキュメント:
ハンドラー: 変更時に操作を実行する
...
これらの「通知」アクションは、プレイブック内の各タスク ブロックの最後にトリガーされ、複数の異なるタスクによって通知された場合でも 1 回だけトリガーされます。
...
ロールについては後ほど説明します。ハンドラーは '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 のバグによって発生し、現在は次の場所で追跡されています:参考: