我想在整個劇本中只運行一次處理程序。只爲整個劇本運行一次Ansible處理程序一次
我嘗試使用包括在劇本文件下面的語句,但是這導致在處理程序被運行多次,一次爲每個玩法:
- 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
這裏是處理器/主要的內容。陽明:
- name: restart autofs
service:
name: autofs.service
state: restarted
這裏的任務之一的一個例子,通知處理程序:
- 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
如何讓劇本僅在整個劇本中執行一次處理程序?
您的playbook看起來有點瘋狂。這個劇本的總體思路是什麼?爲什麼你在這裏包括處理器?處理程序應該由任務通知,因此它是角色的一部分。 查看文檔如何使用處理程序:https://docs.ansible.com/ansible/playbooks_intro.html。 另一種只運行一次特定任務的方法如下:https://docs.ansible.com/ansible/playbooks_delegation.html#run-once –
不確定wild是什麼意思。劇本是一系列戲劇,其中有兩個例子。我想爲多個播放使用單個處理程序,併爲整個Playbook執行一次。我希望這是有道理的。不需要只運行一次任務,只需要運行一次處理程序。 – user3155618
@techraf劇中有多個任務通知處理程序。我編輯了問題並添加了其中一項任務。 – user3155618