ハンドラー: 変更時に操作を実行する

ハンドラー: 変更時に操作を実行する

ロールに「ポストタスク」を含めることは可能ですか? つまり、プレイの最後に実行される、ロールで定義されたタスクですか?

たとえば、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 のバグによって発生し、現在は次の場所で追跡されています:参考:

関連情報