一、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信息。
[[email protected] ~]# grep -A 1 ^grains /etc/salt/minion
grains:
roles: zabbix-agent
[[email protected] ~]# salt ‘192.168.3.1‘ grains.item role
192.168.3.1:
----------
role:
zabbix-agent
2)单独的文件定义存储grains信息。(/etc/salt/grians)
[[email protected] ~]# cat /etc/salt/grains
role: nginx
[[email protected] ~]# salt ‘192.168.3.1‘ grains.item role
192.168.3.1:
----------
role:
nginx
3)在top.sls文件中使用grains
[[email protected] ~]# cat /etc/salt/top.sls
base:
‘role:nginx‘:
- match: grains
- init
*注释:建议使用单独的文件自定义grains的值,切勿多处定义。
4.使用工具刷新grains
[[email protected] ~] salt ‘*‘ saltutil.sync_grains
二、pillar
1.什么是pillar
pillar: 存储在master端,存放需要提供给minion的信息。常用于敏感信息,每个minion只能访问master分配给自己的pillar信息,更多的是经常动态的变化信息。
2.pillar的使用:
获取master端pillar的数据信息
salt ‘*‘ pillar.items|data
3.自定义pillar信息
[[email protected] ~]# grep -A 2 ^pillar /etc/salt/master
pillar_roots:
base:
- /srv/pillar
[[email protected] ~] mkdir /srv/pillar && cd /srv/pillar
[[email protected] pillar]# cat zabbix.sls
zabbix_server: 192.168.3.1
[[email protected] pillar]# cat top.sls
base:
‘192.168.3.1‘:
- zabbix
4.使用saltutil工具的saltutil.refresh_pillar刷新pillar的值
[[email protected] pillar]# salt ‘*‘ saltutil.refresh_pillar
192.168.3.1:
True
node2.xkops.com:
True
5.获取在pillar中自定义的zabbix_server的值
[[email protected] pillar]# salt ‘*‘ pillar.data zabbix_server
node2.xkops.com:
----------
192.168.3.1:
----------
zabbix_server:
192.168.3.1
6.匹配salt的target
salt -I ‘zabbix_server:192.168.3.1‘ test.ping
总结:
grains和pillar的区别
1.grains是静态、不常变化的;pillar则是动态的。
2.grains是存储在minion本地,而pillar存储在master本地。
3.minion有权限操作自己的grains值,如增加、删除,但minion只能查看自己的pillar,无权修改。