pillar模块:


特点:给minion指定它想要的数据,给哪个minion指定,哪个minion能看到,,其他minion看不到,安全性得到了保障,在master端设置的


pillar应用场景:

1、敏感数据

比如给某一个配置文件设置个密码,这个密码只希望某个minion能看到

2、使用pillar处理变量的差异性

3、做配置管理时用pillar定义一些变量参数

4、定位主机




[root@linux-node1 ~]# salt '*' pillar.items

linux-node2:

----------

linux-node1:

----------

pillar模块默认是关闭的,需要在master配置文件打开:


[root@linux-node1 ~]# vim /etc/salt/master

pillar_opts: True

##保存退出,重启salt-master


[root@linux-node1 ~]# salt 'linux-node1' pillar.items

linux-node1:

----------

master:

----------

__role:

master

auth_mode:

1

auto_accept:

False

cache_sreqs:

True

cachedir:

/var/cache/salt/master

.........skip......................



下面我们学习怎么定义pillar的数据:

[root@linux-node1 ~]# vim /etc/salt/master

pillar_roots:

base:

- /srv/pillar

pillar_opts: False

##保存退出,创建目录,重启salt-master

mkdir /srv/pillar

/etc/init.d/salt-master restart


[root@linux-node1 ~]# vim /srv/pillar/apache.sls    ##jinjia模板

{% if grains['os'] == 'CentOS' %}

apache: httpd

{% elif grains['os'] == 'Debian' %}

apache: apache2

{% endif %}

单独运行上面语句没有任何作用,,下面指定哪个minion能看到apache.sls,进行调用

[root@linux-node1 ~]# vim /srv/pillar/top.sls     ##这是pillar的top.sls,和上面的top.sls没有任何关系

base:

'*':

- apache

##让所有的机器都能看到apache的pillar

[root@linux-node1 ~]# salt '*' pillar.items

linux-node2:

----------

apache:

httpd

linux-node1:

----------

apache:

httpd

使用pillar时,在修改完配置文件后,要刷新下使之生效才可以使用,不刷新可以获取到,但不可以用

[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping    ##-I是pillar的缩写

linux-node2:

Minion did not return. [No response]

linux-node1:

Minion did not return. [No response]

[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar

linux-node2:

True

linux-node1:

True

[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping

linux-node1:

True

linux-node2:

True



grains和pillar的区别:

名称存储位置数据类型数据采集更新方式应用
Grainsminion端静态数据minion启动时收集,也可以使用
saltutil.sync_grains进行刷新
存储minion基本数据。比如用于
匹配minion,自身数据可以用来
做资产管理等。
Pillarmaster端动态数据在master端定义,指定给对应的
minion。
可以使用saltutil.sync_pillar刷新。
存储master指定的数据,只有指
定的minion可以看到,用于敏感
数据保存。