这里,top.sls 包含,
# cat top.sls
base:
'*':
- httpd_require
和,
# cat httpd_require.sls
install_httpd:
pkg.installed:
- name: httpd
service.running:
- name: httpd
- enable: True
- require:
- file: install_httpd
file.managed:
- name: /var/www/html/index.html
- source: salt://index1.html
- user: root
- group: root
- mode: 644
- require:
- pkg: install_httpd
高态:
在使用状态文件(.sls)时,我们可以看到高状态系统的所有方面,共有三个特定组件。
- 高数据:
- SLS 文件:
-
高态
-
每个单独的State代表一个高数据(pkg.installed:'s block),Salt会在top.sls中编译所有相关的SLS,当这些文件使用includes捆绑在一起时,进一步粘合在一起供内部使用使用 top.sls 文件的环境,它们形成高状态。
# salt 'remote_minion' state.show_highstate --out yaml
remote_minion:
install_httpd:
__env__: base
__sls__: httpd_require
file:
- name: /var/www/html/index.html
- source: salt://index1.html
- user: root
- group: root
- mode: 644
- require:
- pkg: install_httpd
- managed
- order: 10002
pkg:
- name: httpd
- installed
- order: 10000
service:
- name: httpd
- enable: true
- require:
- file: install_httpd
- running
- order: 10001
首先,声明一个顺序,所有设置为第一的状态将相应调整其顺序。然后 Salt 将在最后定义的数字(默认为 0)上添加 10000,并添加任何未明确排序的状态。
Salt还会添加一些它内部使用的变量,以知道State在哪个环境(__env__)中执行,State声明来自哪个SLS文件(__sls__),记住顺序仍然只是一个起点;实际的 High State 将首先根据需要执行,然后按顺序执行。
“换句话说,“高”数据通常是指用户看到的数据。”
低态:
““低”数据通常指的是被 Salt 摄取和使用的数据。”
一旦生成了最终的高状态,它将被发送到状态编译器。这会将 State 数据重新格式化为 Salt 在内部用于评估每个声明的格式,并将数据馈送到每个 State 模块(根据需要依次调用执行模块)。与高数据一样,低数据可以分解为单独的组件:
所有这一切都构成了一个低状态。每个单独的项目都是一个低块。此列表中的第一个 Low Chunk 如下所示:
- __env__: base
__id__: install_httpd
__sls__: httpd_require
fun: installed
name: http
order: 10000
state: pkg
每个低块映射到一个状态模块(在本例中为 pkg)和该状态模块内的一个函数(在本例中为已安装)。此级别还提供了一个 ID (__id__)。 Salt 将使用 State 和 __id__ 的组合来映射 State 之间的关系(即必要条件)。如果用户未声明名称,Salt 将自动使用 __id__ 作为名称。一旦调用了 State 模块内的函数,它通常会映射到一个或多个实际执行工作的执行模块。