Ansible处理程序 - 独占重启或重新加载

时间:2018-06-04 11:02:04

标签: ansible systemd

我有许多Ansible角色,通知处理程序重新启动或重新加载systemd服务。如果通知重新启动,则显然不需要重新加载相同的服务,并且尝试两者都可能导致失败,因为重新启动后重新加载过快。有没有办法配置处理程序,以便重新加载任务仅在重启任务没有运行时触发?

以下是我当前的重启/重新加载处理程序的示例。

- name: Restart foo service
  systemd:
    name: foo
    daemon_reload: yes
    state: restarted
  become: yes

- name: Reload foo service
  systemd:
    name: foo
    daemon_reload: yes
    state: reloaded
  become: yes

1 个答案:

答案 0 :(得分:3)

您可以从处理程序通知处理程序,这样您就可以实现所需的功能,例如以这种方式(或使用逻辑运算符):

- name: Restart foo service
  set_fact:
    foo_state: restarted
  changed_when: true
  notify: Reload foo service

- name: Reload foo service
  systemd:
    name: foo
    daemon_reload: yes
    state: "{{ foo_state | default('reloaded') }}"
  become: yes

处理程序名称是一个偏好的问题,我将它们保留原样。