STATES TUTORIAL(第六部分)

INCLUDE AND EXCLUDE

包含sls文件或排除已经include进来的sls文件,可以对sls文件进行很好的扩展。


INCLUDE

示例:

1 include:
2   - http
3   - libvirt
View Code

sls可以包含同环境的其他sls文件,同时也可以显示的引入其他环境的sls文件,如下:

1 include:
2   - dev: http
View Code

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
View Code

示例:

1 include:
2   - ..http
3   - ...base
View Code

譬如当前的include声明所在的sls文件是example.dev.virtual,上面的示例中的包含关系可以解释成example.http和base ,
每一个点号代表着上一层目录。


EXCLUDE

exclude可用于排除sls文件或ID块,示例:

1 exclude:
2   - sls: http
3   - id: /etc/vimrc
View Code

注意:如果有多个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中。

原文地址:https://www.cnblogs.com/solitarywares/p/7518485.html