SaltStack Grains 和 Pillar

Grains:

(1) grains 是服务器的一系列粒子信息,也就是服务器的一系列物理,软件环境信息
(2) grains 是 minion 启动时收集到的一些系统信息,比如操作系统版本、内核版本、CPU、内存、硬盘、设备型号等
(3) grains 信息并不是动态的,并不会实时变更,它是在 minion 启动时收集到的,但我们也可以自定义 grains 信息

[root@localhost ~]$ salt '192.168.119.140' grains.ls          # 列出这台 minion 上所有 grains 项目的名字
[root@localhost ~]$ salt '192.168.119.140' grains.items       # 列出这台 minion 上所有 grains 项目的名字和值
[root@localhost ~]$ salt '192.168.119.140' grains.item os     # 列出这台 minion 上指定 grains 项目的值
[root@localhost ~]$ salt -G 'os:CentOS' cmd.run 'hostname'    # 我们可以通过grains信息来指定对哪些符合条件的minion进行操作

 
Pillar:

(1) pillar 跟 grains 的结构一样,也是一个字典格式,数据通过 key:value 的格式进行存储
(2) 不同点:grains 是存储在 minion 本地,而 pillar 是存储在 master 本地
(3) 不同点:grains 是 minion 启动时自动收集的,而 pillar 需要我们在 master 上自定义

[root@localhost ~]$ vim /etc/salt/master    # 编辑SaltStack服务端配置文件
#pillar_roots:                              # 定义存放pillar信息的目录,如果不定义,则默认是在/srv/pillar
#  base:                                    # /srv/pillar目录默认是不存在的,需要我们自行创建
#    - /srv/pillar                          # 如果我们修改了SaltStack服务端配置文件,需要重启SaltStack服务端
[root@localhost ~]$ mkdir /srv/pillar           # 创建存放pillar信息的目录
[root@localhost ~]$ cat /srv/pillar/test.sls    # 自定义pillar信息,注意使用sls文件
role: nginx
conf: /usr/local/nginx/conf/nginx.conf
domain: www.abc.com
[root@localhost ~]$ cat /srv/pillar/top.sls     # 定义pillar入口配置文件,入口配置文件的名字固定是top.sls
base:
  '192.168.119.140':                            # 指定针对哪些主机来使用sls文件
    - test                                      # 指定加载哪些sls文件来获取pillar信息
[root@localhost ~]$ salt '*' saltutil.refresh_pillar           # 对所有主机刷新pillar信息
[root@localhost ~]$ salt -I 'role:nginx' cmd.run 'hostname'    # 这样我们就可以针对pillar信息来对符合条件的主机进行操作了
192.168.119.140:
    localhost.localdomain

 

 

 

 

 

 

 

 

 

 

 

 

    

posted @ 2019-01-15 14:49  孔雀东南飞  阅读(267)  评论(0编辑  收藏  举报