SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解

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	##取单项的值

SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第1张图片
(2)自定义grains项
在minion端设置开启grains,重启salt-minion,否则数据不会更新
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第2张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第3张图片
(3)在server1上通过grains查看角色
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第4张图片
(4)在server3/etc/salt/grains中定义
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第5张图片

salt server3 saltutil.sync_grains	##同步数据
salt server3 grains.item roles	##查询自定义项

SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第6张图片
(5)编写grains模块
在salt-master端创建_grains目录
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第7张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第8张图片
(6)在server1上测试,grains匹配运用
在这里插入图片描述
进入缓存目录,可以发现扩展模块
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第9张图片

salt server2 saltutil.sync_grains	#同步grains到minion端

在这里插入图片描述
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第10张图片
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在target中匹配minion:
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第11张图片
(7)编辑全局推送的脚本,使用角色进行测试
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第12张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第13张图片
(8)推送
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第14张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第15张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第16张图片

4.pillar的实验过程

在master节点上面设置
定义pillar基础目录:

vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar
mkdir /srv/pillar

重启salt-master服务
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第17张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第18张图片

vim /srv/pillar/apache.sls
{% if grains['fqdn'] == 'server2' %}
package: httpd
{% elif grains['fqdn'] == 'server3' %}
package: nginx
{% endif %}

SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第19张图片
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第20张图片

刷新pillar数据:
salt '*' saltutil.refresh_pillar

SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第21张图片

查询pillar数据:
salt '*' pillar.items
salt '*' pillar.item  roles
命令行中匹配:
salt -I 'package:nginx' cmd.run hostname

SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第22张图片
进入缓存目录查看
SaltStack自动化运维——grains(静态数据)与pillar(动态参数)详解_第23张图片

你可能感兴趣的:(linux,运维)