Saltstack - 确保服务运行无法运行的时间表

时间:2017-03-28 16:13:41

标签: service scheduler schedule salt-stack

我正在尝试设置一个Saltstack计划,该计划将检查以确保服务在minion上运行。但是,似乎service.running在计划表中不起作用。

这是我的run.sls文件:

test-service-sched:
    schedule.present:
        - name: test-service-sched
        - function: service.running
        - seconds: 60 
        - job_kwargs:
            name: test-service
        - persist: True
        - enabled: True
        - run_on_start: True

我执行以下操作:salt 'service*' state.apply run

这最终会对小兵产生以下错误:

2017-03-28 02:47:11,493 [salt.utils.schedule                                            ][ERROR   ][6172] Unhandled exception running service.running
Traceback (most recent call last):
  File "/usr/lib/python2.6/site-packages/salt/utils/schedule.py", line 826, in handle_func
    message=self.functions.missing_fun_string(func))
  File "/usr/lib/python2.6/site-packages/salt/utils/error.py", line 36, in raise_error
    raise ex(message)
Exception: 'service.running' is not available.  

我在文档中没有看到任何说明我无法从日程表中运行service.running的内容。这是盐的已知限制吗?或者我只是做错了?

我可以使用cmd.run,但如果服务已经在运行,它最终会将日志垃圾邮件发送错误。

1 个答案:

答案 0 :(得分:0)

所以,我在Salt Google Group的方向上指出了正确的方向。执行模块和状态模块之间存在差异。由于catch是一个执行模块,而schedule只支持状态模块,所以我必须间接引用它。我使用了2个文件:

schedule.sls:

service.running

running.sls:

service_schedule:
  schedule.present:
    - function: state.apply
    - minutes: 1
    - job_args:
      - running

现在,正在运行service_running: service.running: - name: test_service 完全符合我的要求。