1.什么是grains?
Grains是SaltStack的一个组件,存放在SaltStack的minion端。
当salt-minion启动时会把收集到的数据静态存放在Grains当中,只有当minion重启时才会进行数据的更新。
由于grains是静态数据,因此不推荐经常去修改它。
应用场景:
信息查询,可用作CMDB。
在target中使用,匹配minion。
在state系统中使用,配置管理模块。
2.什么是pillar?
pillar和grains一样也是一个数据系统,但是应用场景不同。
pillar是将信息动态的存放在master端,主要存放私密、敏感信息(如用户名密码等),而且可以指定某一个minion才可以看到对应的信息。
pillar更加适合在配置管理中运用。
3.grains实验过程
在server1上可以直接利用grains采集静态数据:
默认可用的grains:查询minion端的IP、FQDN等信息
salt '*' grains.ls ##查看每一项的值
salt server2 grains.item ipv4 ##取单项的值
(2)自定义grains项
在minion端设置开启grains,重启salt-minion,否则数据不会更新
(3)在server1上通过grains查看角色
(4)在server3/etc/salt/grains中定义
salt server3 saltutil.sync_grains ##同步数据
salt server3 grains.item roles ##查询自定义项
(5)编写grains模块
在salt-master端创建_grains目录
(6)在server1上测试,grains匹配运用
进入缓存目录,可以发现扩展模块
salt server2 saltutil.sync_grains #同步grains到minion端
在target中匹配minion:
(7)编辑全局推送的脚本,使用角色进行测试
(8)推送
4.pillar的实验过程
在master节点上面设置
定义pillar基础目录:
vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
mkdir /srv/pillar
重启salt-master服务
vim /srv/pillar/apache.sls
{% if grains['fqdn'] == 'server2' %}
package: httpd
{% elif grains['fqdn'] == 'server3' %}
package: nginx
{% endif %}
刷新pillar数据:
salt '*' saltutil.refresh_pillar
查询pillar数据:
salt '*' pillar.items
salt '*' pillar.item roles
命令行中匹配:
salt -I 'package:nginx' cmd.run hostname
进入缓存目录查看