我想用一个命令运行多个状态,但作为测试,我只是使用一个查看它是否有效。
无论如何我跑
sudo salt' minion' state.apply DirectX
它应该安装它。但这是位于/srv/salt
。
当我创建一个新目录/srv/salt/windows/states
并将我的SLS文件放在那里时,就像之前的DirectX.sls
一样。然后我创建了一个名为runall.sls
的新SLS
在/ srv / salt中。我喜欢runall.sls,比如:
base:
'*':
- windows.states.DirectX
并运行
sudo salt' dss' state.sls runall
我明白了:
minion:
----------
ID: base
Function: minion.windows.states.DirectX
Result: False
Comment: State '*.windows.states.DirectX' was not found in SLS 'runall'
Reason: '*.windows.states.DirectX' is not available.
Changes:
Summary for minion
------------
Succeeded: 0
Failed: 1
------------
Total states run: 1
Total run time: 0.000 ms
我知道我肯定做错了什么,因为这应该很简单,但如果你能指出我的方向会很好。
Salt版本:2016.3.4(小兵和大师) 操作系统:红帽企业Linux服务器6.6圣地亚哥
答案 0 :(得分:4)
您需要区分top files和常见状态文件 - 默认情况下都有.sls
文件后缀。
顶级文件基本上用于将状态捆绑在小兵或小兵团体上,状态可以真正配置特定的东西。
通常,您的环境中有一个top.sls
,它知道哪些小兵应具有哪些状态。如果您之后使用salt '*' state.highstate
,则会应用为您的小兵配置的所有州。
根据您的需要,拥有不同的热门文件可能是个好主意。您可以使用salt '*' state.top /path/to/another_top.sls
来应用此特定的热门文件。
还有另一种方法,根本不使用顶级文件来实现您的要求。
州内有include
[1]。您可以考虑在/srv/salt/bundleX.sls
中创建只使用include指令将您的窗口状态捆绑在一起,如下所示:
include:
- windows.states.DirectX
- windows.states.Foobar
但如果没有反对top.sls
的内容,则会建议使用上面描述的顶级文件。