1、关于Pillar
Pillar:
存储位置:Master端
数据类型:动态数据
数据采集更新方式:在Master端定义,指定给对应的Minion,可以用saltutil.refresh_pillar刷新
应用:存储Master指定的数据,只有指定的Minion可以看到。用于敏感数据保存
Pillar的使用Grains不同,需要手动设置。配置方法与State管理。需要先在master配置文件中定义pillar_roots.
同时,默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。如果要禁用这一默认值,可以在master配置文件中添加如下数据,重启服务后生效:
2、配置pillar
a)定义pillar_roots:
<code>[root@master ~]</code><code># vim /etc/salt/master</code>
<code>pillar_roots:</code>
<code> </code><code>base:</code>
<code> </code><code>- </code><code>/etc/salt/pillar</code>
<code>[root@master ~]</code><code># mkdir -p /etc/salt/pillar</code>
b)定义top.sls:
<code>[root@master ~]</code><code># vim /etc/salt/pillar/top.sls</code>
<code>base:</code>
<code> </code><code>'*'</code><code>:</code>
<code> </code><code>- init.rsyslog</code>
备注:所有的minion端都匹配init目录下的rsyslog.sls文件
默认情况下,master配置文件中的所有数据都添加到Pillar中,且对所有minion可用。
c)编辑Pillar下的SLS文件:
<code>[root@master ~]</code><code># mkdir -p /etc/salt/pillar/init</code>
<code>[root@master ~]</code><code># cd /etc/salt/pillar/init</code>
<code>[root@master init]</code><code># vim rsyslog.sls</code>
<code>{% </code><code>if</code> <code>grains[</code><code>'osfinger'</code><code>] == </code><code>'CentOS-6'</code> <code>%}</code>
<code>syslog: rsyslog</code>
<code>{% </code><code>elif</code> <code>grains[</code><code>'osfinger'</code><code>] == </code><code>'CentOS-5'</code> <code>%}</code>
<code>syslog: syslog</code>
<code>{% endif %}</code>
说明:这个是使用Jiajia模板定义的Pillar。同时使用了Grains来进行条件判断。
注意:key与value之间需要用冒号加空格分隔,没有空格的话会出现报错
d)刷新Pillar数据:
在master上修改pillar文件后,需要用以下命令刷新minion上的数据:
<code>[root@master ~]</code><code># salt '*' saltutil.refresh_pillar</code>
<code>node01.saltstack.com:</code>
<code> </code><code>True</code>
<code>node02.saltstack.com:</code>
<code>[root@master ~]</code><code># salt '*' pillar.item syslog</code>
<code> </code><code>----------</code>
<code> </code><code>syslog:</code>
<code> </code><code>rsyslog</code>
<code>[root@master ~]</code><code># salt '*' pillar.raw</code>
使用pillar.raw查看的是目前正在使用的,存在于minion端的Pillar数据,使用pillar.items会刷新后重新加载的Pillar。所以你如果添加了Pillar,可以使用该方法查询。
<code>[root@master ~]</code><code># salt -I 'syslog:rsyslog' test.ping</code>
<code>[root@master ~]</code><code># salt -I 'syslog:rsyslog' cmd.run 'df -h'</code>
<code> </code><code>Filesystem Size Used Avail Use% Mounted on</code>
<code> </code><code>/dev/sda5</code> <code>14G 8.4G 4.5G 66% /</code>
<code> </code><code>tmpfs 932M 12K 932M 1% </code><code>/dev/shm</code>
<code> </code><code>/dev/sda1</code> <code>190M 42M 139M 23% </code><code>/boot</code>
<code> </code><code>/dev/sda3</code> <code>2.0G 18M 1.8G 1% </code><code>/tmp</code>
<code> </code><code>tmpfs 932M 84K 932M 1% </code><code>/dev/shm</code>
案例2:
<code>[root@master init]</code><code># cd /etc/salt/pillar/</code>
<code>[root@master pillar]</code><code># mkdir -p packages</code>
<code>[root@master pillar]</code><code># cd packages/</code>
<code>[root@master packages]</code><code># vim packages.sls </code>
<code>{% </code><code>if</code> <code>grains[</code><code>'os'</code><code>] == </code><code>'CentOS'</code> <code>%}</code>
<code>apache: httpd</code>
<code>git: git</code>
<code>{% </code><code>elif</code> <code>grains[</code><code>'os'</code><code>] == </code><code>'Debian'</code> <code>%}</code>
<code>apache: apache2</code>
<code>git: git-core</code>
<code>[root@master init]</code><code># salt '*' grains.get os</code>
<code> </code><code>CentOS</code>
<code>[root@master packages]</code><code># cd ..</code>
<code>[root@master pillar]</code><code># ls</code>
<code>init packages </code><code>top</code><code>.sls</code>
<code>[root@master pillar]</code><code># vim top.sls </code>
<code> </code><code>- packages.packages</code>
说明:salt使用-I选项表示使用Pillar来匹配minion.
<code>[root@master init]</code><code># salt -I 'apache:httpd' test.ping</code>
<code>[root@master init]</code><code># salt -I 'git:git' test.ping</code>
<code></code>
本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1899741,如需转载请自行联系原作者