如何使用Ansible安装systemd服务?

ATO*_*TOA 21 systemd ansible

我想从Jinja2模板安装systemd服务.我该怎么做呢?

我是否必须使用copy模块将文件复制到/lib/systemd/system,然后使用systemd模块启用它?

有没有更好的办法?

Pet*_*ons 36

我用template模块将.service文件安装到/etc/systemd/system.根据这个数字海洋博客文章 /lib/systemd/system应保留与操作系统本身捆绑的软件包,并应定义第三方服务/etc/systemd/system.

使用ansible的systemd模块,我将启动服务daemon_reload=yes.

在Ansible 2.2之前:我systemctl daemon-reload之后做了(如果合适,可以使用ansible处理程序)来prod systemd来获取新文件.

- name: install myservice systemd unit file
  template: src=myservice.j2 dest=/etc/systemd/system/myservice.service

- name: start myservice
  systemd: state=started name=myservice daemon_reload=yes


# For ansilble < 2.2 only
#- name: reload systemd unit configuration
#  command: systemctl daemon-reload
Run Code Online (Sandbox Code Playgroud)

  • 这将在每次执行 playbook 时重新加载 systemd 守护进程,这使得该解决方案成为非幂等的。理想情况下,您只想在第一个任务导致更改时重新加载守护程序,因此处理程序将是实现幂等性的更好选择。 (5认同)
  • @ATOzTOA在`/ lib`上安装用户文件不是一个好习惯。应该留给系统软件包。 (3认同)
  • ...并且不要忘记使用处理程序/通知 (2认同)