saltstack之top及highstate命令和highdata lowdata

top.sls在salt中有两种,即state的top.sls和pillar的top.sls。他们的格式是一样的。

环境: #在master配置文件中设置环境
  ‘*’    #target
      - state  #state 文件列表
      
      
master配置文件/etc/salt/master
file_roots:
  base:
    - /srv/salt

pillar_roots:
  base:
    - /srv/pillar

top.sls将不同的状态文件定位到不同的minions中,highstate函数正是通过top.sls文件作为入口对主机和模块进行管理。


high data 和 low data,high数据一般指可见数据,low数据被salt提取并使用的数据。

第一:highstate有3个组件:

high data 
sls文件
high state


查看highstate使用show_highstate

[root@Management-Machine-140 salt]# salt '136' state.show_highstate --out yaml
'136':
  install man:
    __env__: base
    __sls__: install-man
    pkg:
    - pkgs:
      - man
      - lrzsz
    - installed
    - order: 10000
[root@Management-Machine-140 salt]#


第二:生成high state后,会被送入salt编译器,salt会重新格式化成为salt内部数据结构,用于评估每个声明,推送到state模块,low数据也被拆分为以下部分:

low state
low区块
state模块
执行模块

查看lowdata

image.png


state执行模块:

1.state.apply会将highdata缓存到minion端(high data是组成sls文件的块,而多个sls文件通过top.sls文件内的一个环境使用就组成了 highstate了)

state.apply会调用state.highstate 或者 state.sls,这个基于后面的参数。分为以下两种

   a. salt '*' state.apply 会执行top.sls state文件。  

   b. salt '*' state.apply install-man 执行salt://install-man 或者salt://install-man/init.sls

2.当执行state.highstate方法时,salt会自动编译在top.sls中的所有sls文件,编译到单独的definition中,称为highstate。

3.state.sls 执行一个或多个sls文件


示例:

[root@Management-Machine-140 salt]# cat top.sls install-man.sls
base:
  '*':
    - install-man
install man:
  pkg.installed:
{% if grains['id'] == '136' %}
    - pkgs:
      - man
      - lrzsz
{% endif %}
[root@Management-Machine-140 salt]# salt '136' state.apply
136:
    ----------
    pkg_|-install man_|-install man_|-installed:
        ----------
        __run_num__:
            0
        changes:
            ----------
            lrzsz:
                ----------
                new:
                    0.12.20-27.1.el6
                old:
            man:
                ----------
                new:
                    1.6f-39.el6
                old:
        comment:
            The following packages were installed/updated: lrzsz, man
        duration:
            5956.067
        name:
            install man
        result:
            True
        start_time:
            16:10:06.152850
[root@Management-Machine-140 salt]# salt '136' state.highstate        #也可以进行安装
136:
    ----------
    pkg_|-install man_|-install man_|-installed:
        ----------
        __run_num__:
            0
        changes:
            ----------
            lrzsz:
                ----------
                new:
                    0.12.20-27.1.el6
                old:
            man:
                ----------
                new:
                    1.6f-39.el6
                old:
        comment:
            The following packages were installed/updated: lrzsz, man
        duration:
            20222.15
        name:
            install man
        result:
            True
        start_time:
            16:11:08.375206


猜你喜欢

转载自blog.51cto.com/12107790/2319471