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