我在使用Puppet一段时间后尝试使用SaltStack,但我无法理解他们使用"状态"这个词.
我的理解是,例如,灯开关有两种可能的状态 - 开或关.当我编写SLS配置时,我正在描述服务器应该处于什么状态.当我要求SaltStack配置服务器时,我发出命令salt '*' state.highstate.我知道服务器可以在highstate(如我的配置中所述)或不在.到目前为止都很好.
但是这个页面描述了其他州.据介绍lowstate,highstate与overstate(其中包括)的层.这是否意味着服务器通过几个州来到达州?或者所有州都作为图层同时维护?或者我可以在我的SLS中配置多个可能的状态并在它们之间切换SaltStack吗?或者他们只是SaltStack的层,名称中有"状态",我感到困惑?
我可能错过了一些显而易见的事情,如果有人能够朝着正确的方向推动我,我想很多文档都会让我清楚!
在这里,top.sls包含,
# cat top.sls
base:
'*':
- httpd_require
Run Code Online (Sandbox Code Playgroud)
和,
# 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
Run Code Online (Sandbox Code Playgroud)
在处理状态文件(.sls)时,我们可以看到高状态系统的所有方面,有三个特定的组件.
高州
每个单独的状态代表一个高数据(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
Run Code Online (Sandbox Code Playgroud)首先,宣布订单,所有设置为第一的国家将相应调整其订单.然后,Salt将向最后定义的数字(默认为0)添加10000,并添加未明确排序的任何状态.Salt还会添加一些内部使用的变量,以了解执行State的环境(__env__)以及State声明来自哪个SLS文件(__sls__),请记住,顺序仍然只是一个起点; 实际的高状态将首先根据必要条件执行,然后根据订单执行.
"换句话说,"高"数据通常指的是用户看到的数据."
"低"数据通常指的是盐摄取和使用的数据."
生成最终的高状态后,它将被发送到状态编译器.这会将状态数据重新格式化为Salt在内部用于评估每个声明的格式,并将数据提供给每个State模块(根据需要将依次调用执行模块).与高数据一样,低数据可以分解为单个组件:
执行模块
# salt 'remote_minion' state.show_lowstate --out yaml
remote_minion:
- __env__: base
__id__: install_httpd
__sls__: httpd_require
fun: installed
name: httpd
order: 10000
state: pkg
- __env__: base
__id__: install_httpd
__sls__: httpd_require
enable: true
fun: running
name: httpd
order: 10001
require:
- file: install_httpd
state: service
- __env__: base
__id__: install_httpd
__sls__: httpd_require
fun: managed
group: root
mode: 644
name: /var/www/html/index.html
order: 10002
require:
- pkg: install_httpd
source: salt://index1.html
state: file
user: root
Run Code Online (Sandbox Code Playgroud)所有这些都包含一个低态.每个单独的项目都是低块.此列表中的第一个低块看起来像这样:
- __env__: base
__id__: install_httpd
__sls__: httpd_require
fun: installed
name: http
order: 10000
state: pkg
Run Code Online (Sandbox Code Playgroud)
每个低块映射到一个State模块(在本例中为pkg)和一个State模块内的函数(在本例中为已安装).此级别也提供了一个ID(__ id__).Salt将使用State和__id__的组合映射国家之间的关系(即必需品).如果用户尚未声明名称,则Salt将自动使用__id__作为名称.一旦调用了State模块中的函数,它通常将映射到实际执行工作的一个或多个执行模块.
小智 0
我不知道所有级别的状态,但是当你运行时:
salt '*' state.highstate
Run Code Online (Sandbox Code Playgroud)
Saltstack 应用您在/srv/salt/top.sls中提供的状态。
如果你什么都不写,你就不能应用高状态。
您可以使用此命令应用其他状态:
salt '*' state.sls state.example
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3390 次 |
| 最近记录: |