2016-11-30 42 views
1

我想用一个命令运行多个状态,但作为一个测试我只是用一个来查看它是否有效。在一个子目录中运行多个状态

不管怎么说,当我运行

须藤盐 '马仔' state.apply的DirectX

它的作品,因为它应该安装它。但是,这是当它位于/srv/salt

当我创建一个新的目录/srv/salt/windows/states并把我的SLS文件放在那里,就像之前的DirectX.sls一样。然后我在/ srv/salt中创建一个名为runall.sls 的新SLS。我喜欢steup runall.sls:

base: 
    '*': 
    - windows.states.DirectX 

和运行

须藤盐 '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 

我知道我肯定会做错事,因为这应该很简单,但如果你能指出我的方向是正确的 会很好。

盐版本:2016年3月4日(两个仆从和硕士) OS:红帽企业Linux服务器6.6圣地亚哥

回答

4

你需要top files和普通状态文件区分 - 在默认情况下都具有.sls文件后缀。

顶部文件基本上是用来捆绑国家一起在奴才或一群奴才和国家在那里真正配置特定的东西。

通常有一个top.sls为您的环境知道哪些奴才应该有哪些国家。如果你以后使用salt '*' state.highstate所有为你的宠物配置的状态都会被应用。

根据你的需要,它可能是一个好主意,有不同的顶部文件。您可以使用salt '*' state.top /path/to/another_top.sls来应用此特定的顶层文件。

还有一种不使用顶级文件来实现你的要求的方法。

里面的状态有include[1]。你可能会在/srv/salt/bundleX.sls考虑创建只是用include指令到Windows捆绑在一起,称这样的:

include: 
    - windows.states.DirectX 
    - windows.states.Foobar 

但如果是没有对top.sls,一会建议使用顶部文件如上所述。

+0

感谢您的澄清,这工作完美! – dwr123123d12