我无法调用 sls 文件的单一状态。
整个 sls 文件有效
这有效:
salt-ssh w123 state.sls monitoring
这有效:
salt-ssh w123 state.show_sls monitoring
上述输出中的一项:
monitoring_packages:
----------
__env__:
base
__sls__:
monitoring.packages
pkg:
|_
----------
pkgs:
- python-psutil
- installed
|_
----------
order:
10000
我尝试过
现在我只想调用monitoring_packages
,而不是整个 sls 文件:
失败:
salt:/srv # salt-ssh w123 state.sls_id monitoring_packages monitoring
w123:
Data failed to compile:
----------
No matching sls found for 'monitoring' in env 'base'
失败:
salt:/srv # salt-ssh w123 state.single monitoring.monitoring_packages
w123:
TypeError encountered executing state.single: single() takes at least 2 arguments (1 given)
问题
如何调用我的单身状态monitoring_packages
?
版本
salt:/srv # salt-ssh --version
salt-ssh 2015.8.3 (Beryllium)
答案1
答案2
看起来这是一个已知问题:https://github.com/saltstack/salt/issues/29253
它确实可以在 salt-ssh 之外工作。看起来需要将函数添加到该包装器中。
答案3
salt '*target*' state.sls monitoring.<sls_file_name> <task name> -l debug
示例:假设我有一个名为 settings.sls 的 elasticserach 状态和 sls 文件,并且假设该文件里面我有任务 restart_elastic_search,现在我想调用这个特定的任务。
salt '*elastic*' state.sls elasticsearch.settings restart_elastic_search -l debug
答案4
Salt 和 Salt-SSH 具有相同的命令,因此不必担心。
语法是:
# Pseudo code
Action + Minion-Target/s + State_Apply_Action State_file_name
# Examples:
salt \* state.apply myStateFile_under_base
# Nested State file
salt \* state.apply firstDirUnderBase\myStateFile
# Target only Linux Minions
salt -G 'kernel:linux' state.apply myStateFile_under_base
.sls
请注意,运行命令时,状态文件末尾没有 NO !以前可能不是这样,但在 Salt 3005 中似乎确实如此。但是,创建状态文件时.sls
,扩展名确实是必需的。