Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。这里可以看出Pillar的一个特点,Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据(在Salt的设计中,Pillar使用独立的加密session,也是为了保证敏感数据的安全性)。 另外还可以在Pillar中处理平台差异性,比如针对不同的操作系统设置软件包的名字,然后在State中引用等。

 

 

默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。默认如下:

 

#pillar_opts: True 

 

 

[root@server_client base]# salt '*' pillar.items    #查看当前pillar的值\

server_client:
----------
_errors:
- Error encountered while rendering pillar top file.
master:
----------
__cli:
salt-master
__role:
master
allow_minion_key_revoke:
True
archive_jobs:
False

....

 

master上配置文件中定义pillar_roots,用来指定pillar的数据存储在哪个目录

pillar_roots:
   base:
    - /srv/salt/pillar 

首先,和state系统一样,pillar也是需要一个top.sls文件作为一个入口,用来指定对象

base:
  'client':    #这里面表示谁可以使用pillar 
    - sl    #这里指定了一个sl.sls文件

sl.sls文件:

{% if grains['os'] == 'CentOS' %}
var-sl: sl   #pillar定义了一个变量 var-sl 值为 sl
{% endif %} 

 

测试刚才定义的pillar:

[root@server_client base]# salt '*' pillar.items

 

在State文件中将可以引用Pillar数据

进入/srv/salt/base目录 新建一个文件叫xxxx.sls   

 sl-install:

  pkg.installed:
    - name: {{ pillar['var-sl'] }} #pillar数据中的定义的'var-sl' 变量

 

 

 

 

刷新pillar

[root@server_client base]# salt \* saltutil.refresh_pillar

 

 

 

posted on 2019-08-20 11:39  Python哥  阅读(298)  评论(0编辑  收藏  举报