环境

  • minion id:local

  • master上多环境配置:一个base环境,一个test环境

file_roots:  
  base:
    - /srv/salt/base  
  test:
    - /srv/salt/test


每个环境下分别创建top.sls:

cat base/top.sls

# base环境中的top.sls,包含base环境的state定义(test1)和test环境的state定义(test2)
base:
  'local':
    - test1
test:
  'local':
    - test2
cat test/top.sls

# test环境中的top.sls,只有test环境的state定义(test3)
test:
  'local':
    - test3


测试过程

使用 salt 命令执行state模块的show_top方法,可以查看minion将会执行的top file,配合saltenv参数,可以切换不同的环境。

  1. 执行命令:salt local state.show_top 输出:

local:
    ----------
    base:
        - test1
    test:
        - test2
  1. 执行命令:salt local state.show_top saltenv=base 输出:

local:
    ----------    
    base:
        - test1
  1. 执行命令:salt local state.show_top saltenv=test 输出:

local:
    ----------    
    test:
        - test3

结论

  • 当不指定执行环境时,salt会执行base环境中的top.sls里定义的所有state。如例子中的test1和test2。

  • 当指定执行环境为base时(saltenv=base),salt只会执行base环境中的top.sls里base定义的state。如例子中的test1。

  • 当指定执行环境为test时(saltenv=test),salt只会执行test环境中的top.sls里base定义的state。如例子中的test3。

参考:saltstack top