saltstack pillar

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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:

1
2
3
4
5
[root@master ~] # vim /etc/salt/master
pillar_roots:
   base:
     /etc/salt/pillar
[root@master ~] # mkdir -p /etc/salt/pillar

b)定义top.sls:

1
2
3
4
[root@master ~] # vim /etc/salt/pillar/top.sls
base:
   '*' :
     - init.rsyslog

备注:所有的minion端都匹配init目录下的rsyslog.sls文件

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

c)编辑Pillar下的SLS文件:

1
2
3
4
5
6
7
8
[root@master ~] # mkdir -p /etc/salt/pillar/init
[root@master ~] # cd /etc/salt/pillar/init
[root@master init] # vim rsyslog.sls
{%  if  grains[ 'osfinger' ] ==  'CentOS-6'  %}
syslog: rsyslog
{%  elif  grains[ 'osfinger' ] ==  'CentOS-5'  %}
syslog: syslog
{% endif %}

说明:这个是使用Jiajia模板定义的Pillar。同时使用了Grains来进行条件判断。

注意:key与value之间需要用冒号加空格分隔,没有空格的话会出现报错

d)刷新Pillar数据:

在master上修改pillar文件后,需要用以下命令刷新minion上的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@master ~] # salt '*' saltutil.refresh_pillar
node01.saltstack.com:
     True
node02.saltstack.com:
     True
[root@master ~] # salt '*' pillar.item syslog
node01.saltstack.com:
     ----------
     syslog:
         rsyslog
node02.saltstack.com:
     ----------
     syslog:
         rsyslog
[root@master ~] # salt '*' pillar.raw
node01.saltstack.com:
     ----------
     syslog:
         rsyslog
node02.saltstack.com:
     ----------
     syslog:
         rsyslog

使用pillar.raw查看的是目前正在使用的,存在于minion端的Pillar数据,使用pillar.items会刷新后重新加载的Pillar。所以你如果添加了Pillar,可以使用该方法查询。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@master ~] # salt -I 'syslog:rsyslog' test.ping
node01.saltstack.com:
     True
node02.saltstack.com:
     True
[root@master ~] # salt -I 'syslog:rsyslog' cmd.run 'df -h'
node02.saltstack.com:
     Filesystem      Size  Used Avail Use% Mounted on
     /dev/sda5         14G  8.4G  4.5G  66% /
     tmpfs           932M   12K  932M   1%  /dev/shm
     /dev/sda1        190M   42M  139M  23%  /boot
     /dev/sda3        2.0G   18M  1.8G   1%  /tmp
node01.saltstack.com:
     Filesystem      Size  Used Avail Use% Mounted on
     /dev/sda5         14G  8.4G  4.5G  66% /
     tmpfs           932M   84K  932M   1%  /dev/shm
     /dev/sda1        190M   42M  139M  23%  /boot
     /dev/sda3        2.0G   18M  1.8G   1%  /tmp

案例2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@master init] # cd /etc/salt/pillar/
[root@master pillar] # mkdir -p packages
[root@master pillar] # cd packages/
[root@master packages] # vim packages.sls 
{%  if  grains[ 'os' ] ==  'CentOS'  %}
apache: httpd
git: git
{%  elif  grains[ 'os' ] ==  'Debian'  %}
apache: apache2
git: git-core
{% endif %}
[root@master init] # salt '*' grains.get os
node01.saltstack.com:
     CentOS
node02.saltstack.com:
     CentOS
[root@master packages] # cd ..
[root@master pillar] # ls
init  packages   top .sls
[root@master pillar] # vim top.sls 
base:
   '*' :
     - init.rsyslog
     - packages.packages

说明:salt使用-I选项表示使用Pillar来匹配minion.

1
2
3
4
5
6
7
8
9
10
[root@master init] # salt -I 'apache:httpd' test.ping
node01.saltstack.com:
     True
node02.saltstack.com:
     True
[root@master init] # salt -I 'git:git' test.ping
node02.saltstack.com:
     True
node01.saltstack.com:
     True










本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1899741,如需转载请自行联系原作者
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Linux Apache 开发工具
|
Web App开发 应用服务中间件 Shell