我在 salt 中创建了一个状态文件,用于将 check_mk Nagios 脚本列表复制到远程服务器。下面是状态文件的片段。
check_mk_defined_checks:
file.recurse:
- name: /usr/lib/check_mk_agent/local
- source: salt://{{ slspath }}/files/cmk_checks
- user: nagios
- group: users
- file_mode: 754
- dir_mode: 755
- require:
- check_mk_agent_installed
有趣的是,当我直接运行 sls 状态时,一切正常。见下文。
salt-call state.sls dev.roles.srvr.system_conf.check_mk
----------
ID: check_mk_defined_checks
Function: file.recurse
Name: /usr/lib/check_mk_agent/local
Result: True
Comment: The directory /usr/lib/check_mk_agent/local is in the correct state
Started: 20:54:29.105625
Duration: 1475.026 ms
Changes:
但是,当我将其作为高级状态的一部分运行时,出现以下错误。
----------
ID: check_mk_defined_checks
Function: file.recurse
Name: /usr/lib/check_mk_agent/local
Result: False
Comment: Recurse failed: none of the specified sources were found
Started: 20:45:19.369238
Duration: 917.113 ms
Changes:
我花了太多时间研究这个问题。我无法在任何状态下使用递归函数,否则我会得到相同的结果。当你直接调用状态时,它会起作用,但不能作为高级状态的一部分。
任何人提供的任何帮助都将非常有帮助。
谢谢,
答案1
源files/cmk_checks
需要存在于所有环境中,并且主服务器上的路径将特定于环境。
您的运行很可能salt-call
在与 highstate 不同的环境中执行状态。您应该salt-call state.sls
使用saltenv=…
争论。