我们通过 SaltStack 部署和更改系统服务文件。
例如,如果文件/etc/systemd/system/superfoo.service被更改,则 systemd 会发出以下警告:
Warning: Unit file of superfoo.service changed on disk,
'systemctl --system daemon-reload' recommended.
Run Code Online (Sandbox Code Playgroud)
如何使用 salt-stack 自动执行此操作?
尽管@MaksaSila 确实先回答了,但我想提供更完整的解决方案。
您只需要一个 cmd.run 来处理文件更改,我正在使用类似的方法:
# 样本.sls
systemd-重新加载:
cmd.运行:
- 名称:systemctl --system daemon-reload
- 变化:
- 文件:superbar.service
超级酒吧服务:
文件管理:
- 名称:/etc/systemd/system/superbar.service
superfoo.service:
文件管理:
- 名称:/etc/systemd/system/superfoo.service
- onchanges_in:
- cmd: systemd-reload
后一种方法将允许您将 systemd 部分和服务部分拆分为不同的 SLS 文件(不要忘记为您所做的每个 sls 文件包含 systemd onchanges_in)。
请参阅此手册页以获取有关状态关系和依赖项的更多详细信息。
@jollyroger 的回答适用于 <0.15.0 版本
从 0.15.0 开始,我们可以使用systemd_service.systemctl_reload:https :
//docs.saltstack.com/en/latest/ref/modules/all/salt.modules.systemd_service.html#salt.modules.systemd_service.systemctl_reload
superbar.service
file.managed:
- name: /etc/systemd/system/superbar.service
module.run:
- name: service.systemctl_reload
- onchanges:
- file: /etc/systemd/system/superbar.service
Run Code Online (Sandbox Code Playgroud)
我相信这大大简化了代码。
[编辑] 指令“systemctl_reload”可能看起来像systemctl reload,但它在systemctl --system daemon-reload下面执行。
https://github.com/saltstack/salt/blob/9bbbd3629418b2b086360f5b303323ec55ca0315/salt/modules/systemd_service.py#L377-L399
Saltstack 文档还明确指出它
“重新加载 systemctl,这是更新单元文件时所需的操作。”
| 归档时间: |
|
| 查看次数: |
9262 次 |
| 最近记录: |