SaltStack:Grains和Pillars

1. Grains

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

2. Pillars

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命令。

3. Grains与Pillars相同点和不同点

相同点:
都是以key value形式存储的数据库,都为python字典
不同点:

SaltStack:Grains和Pillars_第1张图片
906920D1-6A04-4E3F-81B6-2711C3803C82.png

ps: Grains的刷新命令仅用于人为自定义的数据刷新有效,要重新收集机器本身Grains数据必须重启minion。

你可能感兴趣的:(SaltStack:Grains和Pillars)