这里简单介绍一下state.sls 与 state.highstate 与区别,这也是自己在使用过程中的一点心得吧。

环境介绍:salt 2015.5.0 (Lithium)

top.sls  

saltstack   state.sls 与 state.highstate_saltstack

saltstack   state.sls 与 state.highstate_saltstack_02

saltstack   state.sls 与 state.highstate_saltstack_03



state.highstate 这个是全局的所有的环境的所有的状态生效;

state.sls 用来指定特定sls进行处理。

当使用  salt '*' state.highstate 没有任何问题

可是当执行 salt '*' state.sls servers_packages 发现没法执行

翻看官方文档发现:state.sls 是不会去读取top.sls 的如果没有指定saltenv 它就直接读取file_roots 里面的base。所以执行不了。

saltstack   state.sls 与 state.highstate_saltstack_04

解决方法有两个:

1、在file_roots base 里添加dev路径

saltstack   state.sls 与 state.highstate_saltstack_05

2、在有就是执行时添加路径

 salt '*' state.sls dev.servers_packages

有的文章说指定 saltenv 可以解决,我发现在我的版本不支持。或者我指定的位置有问题吧,不过上面两种方法,亲测可以正常使用。