INCLUDE AND EXCLUDE
包含sls文件或排除已经include进来的sls文件,可以对sls文件进行很好的扩展。
INCLUDE
示例:
1 include: 2 - http 3 - libvirt
sls可以包含同环境的其他sls文件,同时也可以显示的引入其他环境的sls文件,如下:
1 include: 2 - dev: http
Do not use dots in SLS file names or their directories
不要在sls文件名和目录中使用点号,譬如webserver_1.0是不能正确识别的,会被识别为webserver_1/0.sls。
RELATIVE INCLUDE
使用相对路径进行包含
1 include: 2 - .virt 3 - .virt.hyper
示例:
1 include: 2 - ..http 3 - ...base
譬如当前的include声明所在的sls文件是example.dev.virtual,上面的示例中的包含关系可以解释成example.http和base ,
每一个点号代表着上一层目录。
EXCLUDE
exclude可用于排除sls文件或ID块,示例:
1 exclude: 2 - sls: http 3 - id: /etc/vimrc
注意:如果有多个id重复的话,state文件在检查运行是会报错。
#################################################################################
STATE SYSTEM LAYERS
state系统层级关系,state系统是有多个状态层级组成,了解salt如何编译和管理state非常有益。
FUNCTION CALL
在状态系统中最底层的功能是直接调用函数执行,可以通过state.single命令直接执行。
示例:
salt '*' state.single pkg.installed name='vim'
LOW CHUNK
一个单一的低级状态数据(函数调用的数据表示)可以通过state.low命令调用执行:
salt '*' state.low '{name: vim, state: pkg, fun: installed}'
LOW STATE
示例:
salt '*' state.show_lowstate
结果将显示各个数据状态块被检查评估,并不是按顺序进行,但必须在运行时进行,检查完毕之后的生成的顺序将是执行后的实际顺序。
HIGH DATA
high data数据结构是有sls文件中的yaml格式内容生成的,包括合并其他sls文件,high data数据更容易被执行,使用state.show_highstate和state.show_sls函数,因为high data数据结构比较复杂,可以将其输出为yaml或其他易读的格式展示。
salt '*' state.show_highstate --out yaml
salt '*' state.show_sls edit.vim --out pprint
SLS
sls文件生成high data数据结构可以是动态的,譬如执行渲染逻辑和引入pillar变量等,sls层可以直接调用执行单个sls文件
示例:
salt '*' state.apply edit.vim
HIGHSTATE
Highstate层允许对已指定匹配执行的minion分配完整的上下文内容,而无需执行或配置目标minion上的任何内容。
salt '*' state.apply #注意是不带参数的
ORCHESTRATE
略
关于state配置的层级关系简要说明:
LOW CHUNK:简单的配置数据块,经过编译后的数据形式
LOW STATE:简单的state文件配置数据块,经过编译后的数据形式
HIGH DATA:经过渲染和初步编译后的数据配置形式
HIGHSTATE:一群相互关联的sls文件组成的配置形式,一般放在top.sls中。