我想从Jinja2模板安装一个systemd服务。我该怎么做?
我是否必须使用copy
模块将文件复制到/lib/systemd/system
,然后再使用systemd
模块启用它?
是否有更好的方法?
我使用template
模块将.service
文件安装到/etc/systemd/system
中。根据这篇Digital Ocean博客文章,/lib/systemd/system
应该为操作系统自带的软件包保留,第三方服务应定义在/etc/systemd/system
中。
使用ansible的systemd
模块,我会使用daemon_reload=yes
来启动服务。
在Ansible 2.2之前:之后我会执行systemctl daemon-reload
命令(如果适用可以使用ansible处理程序)来促使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
/etc/systemd/system
目录下,只是建议将其放在该目录下以便优先加载。通常情况下,当您执行systemctl enable
命令时,它会在/lib/systemd/system
和/etc/systemd/system
之间创建一个符号链接。 - ATOzTOA/lib
上安装用户文件并不是一个好的做法,这个目录应该留给系统包使用。 - admirabilis