我正在尝试设置一个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
,但如果服务已经在运行,它最终会将日志垃圾邮件发送错误。
答案 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
完全符合我的要求。