saltstack的state.sls和state.highstate之区别

saltstack的state.sls和state.highstate之区别

state.sls默认的运行环境是base环境,但是它并不读取top.sls(top.sls定义了运行环境以及需要运行的sls)。关于state.sls的官方文档说明如下:

salt.modules.state.sls(mods, saltenv='base', test=None, exclude=None, queue=False, env=None,**kwargs)  

这里saltenv指的是运行环境,默认是base环境。

state.highstate: 这个是全局的所有环境,以及所有状态都生效。它会读取每一个环境的top.sls,并且对所有sls都生效。

我只有一个base环境,这个base环境下的top.sls文件内容如下:

base:    '*':      - backup      - monitor      - sysctr      - slowlog      - offline      - conf      - statistics      - test      - shell      - dbmsdba      - dba-tools  

top.sls文件并没有定义 – sync_dbconf这个sls。但是在base环境定义的目录下:

file_roots:     base:       - /data/dbms/salt  

也就是/data/dbms/salt目录下,定义了sync_dbconf.sls文件,该sls定义是为了向minion下发特定的文件。

1)、使用state.highstate的时候

/data1/Python-2.7.4/bin/salt 'minion_xxxx' state.highstate  

可以发现并没有将sync_dbconf.sls定义的文件下发到minion端

2)、使用state.sls的时候

/data1/Python-2.7.4/bin/salt 'minion_xxxx' state.sls sync_dbconf  

发现可以将sync_dbconf.sls定义的文件下发到minion端

以上说明:

1、state.highstate会读取所有环境(包括base环境)的top.sls文件,并且执行top.sls文件内容里面定义的sls文件,不在top.sls文件里面记录的sls则不会被执行;

2、state.sls默认读取base环境,但是它并不会读取top.sls文件。你可以指定state.sls执行哪个sls文件,只要这个sls文件在base环境下存在;

3、state.sls也可以指定读取哪个环境:state.sls salt_env=’prod’ xxxx.sls,这个xxxx.sls可以不在top.sls中记录。

原文出处:zhuchhui -> http://www.zhuchhui.com/article-detials/108

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。