Salt 状态以启用 re-运行 systemd 服务

Salt state to enable re-run systemd service

我正在尝试制作盐状态文件以简单地确保启用并重新运行我的一次性服务。我认为如果任何依赖文件发生变化,重新 运行 会很好,但老实说,这很简单,当我想要时,短期服务几乎永远不会 运行ning更新。

当前尝试:

myown-systemd-service-unit-file:
...

myown-systemd-service-executable-file:
...

myown-service:
  systemd.force_reload:
    - name: myown
    - enable: True
    - watch:
      - myown-systemd-service-unit-file
      - myown-systemd-service-executable-file

失败并出现错误:

----------
          ID: myown-service
    Function: systemd.force_reload
        Name: myown
      Result: False
     Comment: State 'systemd.force_reload' was not found in SLS 'something.myown'
              Reason: 'systemd.force_reload' is not available.
     Changes: 

enable,我的意思是应用此 CLI 调用的等效项:

sudo systemctl enable myown.service

相关文档:https://docs.saltproject.io/en/latest/ref/modules/all/salt.modules.systemd_service.html#module-salt.modules.systemd_service

systemd_service模块是一个执行模块syntax使用此类模块略有不同。您正在使用的状态声明用于 状态模块 。此外,文档中的示例指向使用 service.force_reload 而不是 systemd.force_reload.

salt '*' service.force_reload <service name>

考虑到所有这些,下面的示例在服务单元文件更改时重新启动并启用 myown 服务。

myown-service:
  module.run:
  - service.restart:
    - name: myown
    onchanges:
    - file: myown-systemd-service-unit-file
  - service.enable:
    - name: myown

请注意,我使用 restart 而不是 force_reload 来退回服务。我还使用 onchanges 作为 file 模块,因为您没有展示如何管理这两个文件。您可以使用适当的模块和状态 ID。