<h2>1. Grains</h2>Grains可以认为是描述minion本身固有属性的静态数据。例如,minion服务器的操作系统版本、内存的大小、网卡的MAC地址等
列出主机所有的Grains数据命令:
# salt "minion-one" grains.items
查询系统版本:
# salt 'minion-one' grains.item os
我们可以用Grains定位主机:利用-G或--grain对系统为CentOS的机器定位
# salt -G 'os:CentOS' test.ping
定位系统版本为7.X的机器
# salt -G 'osrelease:7.*' test.ping
凡是之前用grains.items列出的所有数据都可以用来匹配主机。并且,Grains还支持自定义,可以满足各种不同的需求。自定义方法很多,以下是一个简单的自定义例子
# salt 'minion-one' grains.setval cpu_num 8
查看自定义后的grains数据
# salt 'minion-one' grains.item cpu_num
这种方法设置的Grains已经被写入到minion机器的配置文件里了,即使重启salt-minion服务,Grain数据也将存在,可以用grains.delval
命令进行删除,或者在minion机器上找到数据定义删除配置文件并重启minion。
自定义Grains数据存储在minion的位置如下:
# cat /etc/salt/grains
<h2>2. Pillars</h2>Pillars数据与Grains相似,不同点在于Pillars可以定义为更加动态的形式,并且它是存储在master端的,常用于设置敏感数据。
列出主机所有的Pillars数据命令:
# salt "minion-one" pillar.items
上述命令的执行结果有可能为空,因为master端默认关闭了Pillars,使用vi etc/salt/master
把pillar_opts: False注释删除并改为True,再执行上述命令就可以看到主机的Pillars数据了,Pillars还是默认关闭为好,这里只是查看一下,查看完记得关闭。
Pillars同样支持自定义数据,使用Pillars匹配机器可以用-I命令。
<h2>3. Grains与Pillars相同点和不同点</h2><h5>相同点:</h5>都是以key value形式存储的数据库,都为python字典
<h5>不同点:</h5>
ps: Grains的刷新命令仅用于人为自定义的数据刷新有效,要重新收集机器本身Grains数据必须重启minion。