Playbook 全体で 1 回だけハンドラーを実行したいと考えています。
Playbook ファイルで次のように include ステートメントを使用しようとしましたが、これにより、ハンドラーが複数回実行され、再生ごとに 1 回実行されました。
- name: Configure common config
hosts: all
become: true
vars:
OE: "{{ ansible_hostname[5] }}"
roles:
- { role: common }
handlers:
- include: handlers/main.yml
- name: Configure metadata config
hosts: metadata
become: true
vars:
OE: "{{ ansible_hostname[5] }}"
roles:
- { role: metadata }
handlers:
- include: handlers/main.yml
handlers/main.yml の内容は次のとおりです。
- name: restart autofs
service:
name: autofs.service
state: restarted
ハンドラーに通知するタスクの 1 つの例を次に示します。
- name: Configure automount - /opt/local/xxx in /etc/auto.direct
lineinfile:
dest: /etc/auto.direct
regexp: "^/opt/local/xxx"
line: "/opt/local/xxx -acdirmin=0,acdirmax=0,rdirplus,rw,hard,intr,bg,retry=2 nfs_server:/vol/xxx"
notify: restart autofs
プレイブック全体でハンドラーを 1 回だけ実行するようにプレイブックを取得するにはどうすればよいですか?