在启动和重启之间选择的更清洁方式

时间:2017-09-29 13:32:07

标签: ansible systemd

我有一个ansible配置,用于将本地构建的守护进程部署到一系列目标计算机,这些守护进程具有关联的systemd服务文件来控制它们。

我想要发生的是:

  1. 如果更改了守护程序或单元文件,请重新启动服务
  2. 如果守护程序未更改,则只需启动服务(可能算作'未更改',因为它可能已经在运行)
  3. 我在几个地方这样做,所以我有一个常见的重复模式,如下所示:

    - name: Populate the daemon
      copy:
        src: "local_build/mydaemon"
        dest: "/usr/bin/mydaemon"
        mode: 0775
      register: daemon_bin
    
    - name: Populate the service
      template:
        src: "Daemon.service"
        dest: "/etc/systemd/system/mydaemon.service"
      register: daemon_service
    
    - name: Enable and restart
      systemd:
        state: restarted
        daemon_reload: yes
        enabled: yes
        name: "mydaemon.service"
      when: (daemon_bin.changed or daemon_service.changed)
    
    - name: Enable and start
      systemd:
        state: started
        enabled: yes
        name: "mydaemon.service"
      when: not (daemon_bin.changed or daemon_service.changed)
    

    有更清洁的方法来实现这一目标吗?感觉这可能是一个常见的问题。或者我的方法有点不对劲?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用notify and handlers