一、grains
1.什么是grains
grains:存储minion端的信息,包括一些网络、硬件等信息,保存在minion端。一般为静态信息,非经常变化的数据。2.grains的使用:
获取minion端信息salt '192.168.3.1' grains.items --获取minion端所有的grains信息。salt '192.168.3.1' grains.item fqdn --通过grains.item获取minion端的fqdn信息。salt '192.168.3.1' grains.get fqdn --通过grains.get获取minion端的fqdn信息。匹配salt的target
salt -G 'os:CentOS' cmd.run 'uptime' --匹配minion端OS为CentOS的执行uptime命令。3.自定义grains(*重启才能获取grains信息)
1)编辑/etc/salt/minion定义grains信息。[root@node1 ~]# grep -A 1 ^grains /etc/salt/miniongrains: roles: zabbix-agent[root@node1 ~]# salt '192.168.3.1' grains.item role192.168.3.1: ---------- role: zabbix-agent2)单独的文件定义存储grains信息。(/etc/salt/grians)
[root@node1 ~]# cat /etc/salt/grains role: nginx[root@node1 ~]# salt '192.168.3.1' grains.item role192.168.3.1: ---------- role: nginx3)在top.sls文件中使用grains[root@node1 ~]# cat /etc/salt/top.slsbase: 'role:nginx': - match: grains*注释:建议使用单独的文件自定义grains的值,切勿多处定义。4.使用工具刷新grains[root@node1 ~] salt '*' saltutil.sync_grains二、pillar
1.什么是pillarpillar: 存储在master端,存放需要提供给minion的信息。常用于敏感信息,每个minion只能访问master分配给自己的pillar信息,更多的是经常动态的变化信息。 2.pillar的使用:获取master端pillar的数据信息salt '*' pillar.items|data3.自定义pillar信息
[root@node1 ~]# grep -A 2 ^pillar /etc/salt/master pillar_roots: base: - /srv/pillar[root@node1 ~] mkdir /srv/pillar && cd /srv/pillar[root@node1 pillar]# cat zabbix.sls zabbix_server: 192.168.3.1[root@node1 pillar]# cat top.sls base: '*': - zabbix4.使用saltutil工具的saltutil.refresh_pillar刷新pillar的值[root@node1 pillar]# salt '*' saltutil.refresh_pillar192.168.3.1: Truenode2.xkops.com: True5.获取在pillar中自定义的zabbix_server的值[root@node1 pillar]# salt '*' pillar.data zabbix_servernode2.xkops.com: ----------192.168.3.1: ---------- zabbix_server: 192.168.3.1 6.匹配salt的targetsalt -I 'zabbix_server:192.168.3.1' test.ping 总结:grains和pillar的区别1.grains是静态、不常变化的;pillar则是动态的。2.grains是存储在minion本地,而pillar存储在master本地。3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改。