是否可以在 Ansible 中通知一组服务而不是单个服务?

030*_*030 1 ansible ansible-playbook

- name: be sure check-http.rb is copied
  copy:
    src: /tmp/sensu-plugins-http/bin/check-http.rb
    dest: /etc/sensu/plugins/check-http.rb
    remote_src: true
    owner: sensu
    group: sensu
    mode: 0500
  notify:
    - restart sensu-api
    - restart sensu-client
    - restart sensu-server

- name: be sure check_websites.json is copied
  template:
    src: check_websites.j2
    dest: "{{ sensu_conf_d }}/check_websites.json"
  register: check_websites_config
  notify:
    - restart sensu-api
    - restart sensu-client
    - restart sensu-server
Run Code Online (Sandbox Code Playgroud)

而不是重复:

notify:
  - restart sensu-api
  - restart sensu-client
  - restart sensu-server
Run Code Online (Sandbox Code Playgroud)

是否可以使其简洁,例如:

notify:
  - restart sensu-services
Run Code Online (Sandbox Code Playgroud)

预期答案

@knowhy 建议这个解决方案,但我正在寻找一个能够在处理程序中而不是在任务目录中组合多次重新启动的解决方案

小智 7

有listen属性。

notify:
  - "restart sensu-services"


handlers:
- name: restart sensu api
  listen: "restart sensu-services"
  service: name=sensu-api state=restarted
  ignore_errors: true

- name: restart sensu service
  listen: "restart sensu-services"
  service: name=sensu-service state=restarted
  ignore_errors: true

- name: restart sensu client
  listen: "restart sensu-services"
  service: name=sensu-client state=restarted
  ignore_errors: true
Run Code Online (Sandbox Code Playgroud)