天天看点

saltstack pillar

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,如需转载请自行联系原作者

继续阅读