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