运维工具SaltStack之四Pillar组件

一、pillar组件介绍

跟grains的结构一样,存放需要提供给Minion端的信息,存储在master端。可根据各个机器环境的不同,分别定义变量,然后再sls文件里统一引用,官方表示pillar是存储敏感数据的,主要解决环境的差异性。同时与grains组件还有一个特别的区别:grains数据加载在内存里,即minion启动之后不会变,哪怕修改了grains,除非重启minion或者从master端同步。而pillar修改之后,再获取数据即生效了。

注;pillar是存放在master端,默认位置/srv/pillar,需要新建目录。和salt sls类似,也是需要top.sls


二、pillar组件自定义

1.使用默认的Master的pillar_roots配置路径 /srv/pillar需要新创建该目录

# mkdir /srv/pillar

2.修改salt的Master主配置文件(/etc/salt/master),新增如下内容,并且需要重启Master服务:

pillar_roots:
  base:
    - /srv/pillar
# systemctl restart salt-master.service

注意:yaml格式问题: 和 - 后有空格,小心缩进!!!!!!!!


3.在/srv/pillar目录下新建top.sls(入口文件),如:

# cat /srv/pillar/top.sls
base:
  '*':
    - test #指data.sls文件

注:'*'代表任意主机,- test 指包含一个test.sls文件.top.sls引用时可用两种方法:文件放在同级;二是在pillar目录下创建test目录,在该目录下创建init.sls文件。


4.在/srv/pillar目录下新建test.sls,内容如下:

# cat test.sls 
httpd:
  pkg: httpd
  version: 2.4

5.刷新Minion端主机的pillar信息,检查test.sls数据项mysql

# salt '*' saltutil.refresh_pillar
minion01:
    True
# salt 'minion01' pillar.items
minion01:
    ----------
    httpd:
        ----------
        pkg:
            httpd
        version:
            2.4


6.常见pillar命令

salt '*' sys.doc pillar            #查看与pillar有关的帮助信息

salt '*' pillar.items              #获取所有pillar items值

salt '*' pillar.data               #等价于pillar.items

salt '*' saltutil.refresh_pillar   #刷新pillar值

salt '*' saltutil.sync_all         #刷新pillar值,与refresh_pillar操作类似,但范围更大

salt '*' sys.list_functions pillar #列出所有的pillar相关函数方法

salt '*' pillar.get xxx            #获取某项的值

salt '*' pillar.raw                #内存中获取