saltstack数据系统之Grains,pillar

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

Grains

grains 负责采集客户端(minion端)一些基本信息 ,这个也完全可以自定义,可以在客户端自定义,然后自动汇报上来,也可以从服务器端定义然后推下去,采集完后再汇报上来(重启才收集),也可以使用saltutil.sync_grains进行刷新


1.grains收集信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@node1 salt]# salt  'node1*'  grains.ls
[root@node1 salt]# salt  'node1'  grains.items    #查看收集的所有信息
[root@node1 salt]# salt  'node1'  grains. get  fqdn    #显示单个
node1:
     node1
[root@node1 salt]# salt  'node1'  grains.item fqdn    #显示单个
node1:
     ----------
     fqdn:
         node1
  
[root@node1 salt]# salt  'node1*'  grains. get  ip_interfaces:eth2
node1:
     192.168 . 10.129
     - fe80::20c:29ff:feca:35bf

2.grains之在指定服务器执行命令(-G匹配grains信息)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[root@node1 salt]# salt  'node*'  grains. get  os
node2:
     CentOS
node1:
     CentOS
[root@node1 salt]# salt -G os:CentOS cmd.run  'w'   #与grains里存储的os信息匹配,匹配到的机器执行 w
node2:
      14 : 46 : 45  up  15 : 04 ,   2  users,  load average:  0.00 0.00 0.00
     USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
     root     tty1     -                 12 : 27     2 :19m   0 .06s   0 .06s -bash
     root     pts/ 0     192.168 . 10.1      12 : 38    28 : 32    0 .40s   0 .29s bash
node1:
      06 : 48 : 31  up  15 : 04 ,   2  users,  load average:  0.08 0.04 0.04
     USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
     root     tty1     -                Wed15     2 :19m   0 .33s   0 .01s bash
root     pts/ 0     192.168 . 10.1      04 : 40     1 .00s   1 .06s   0 .39s /usr/bin/python

 

3.自定义信息

minion端自定义1:

1
2
3
4
5
6
7
8
9
10
11
[root@node2 ~]# vim /etc/salt/minion ###在node2自定义角色-webserver,memcache
grains:
   roles:
     - webserver
     - memcache
[root@node2 ~]# /etc/init.d/salt-minion restart
测试:
[root@node1 salt]# salt -G  'roles:memcache'  cmd.run  'echo hehe'    
node2:
hehe
注:在master端收集与grains里自定义的角色匹配的机器执行echo命令


minion端自定义2:

1
2
3
4
5
6
7
8
9
10
[root@node2 ~]# cat /etc/salt/grains   ###也可以在/etc/salt/grains自定义  
web: nginx
[root@node2 ~]# /etc/init.d/salt-minion restart
测试
[root@node1 salt]# salt -G web:nginx cmd.run  'w'
node2:
      14 : 59 : 37  up  15 : 17 ,   2  users,  load average:  0.00 0.00 0.00
     USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
     root     tty1     -                 12 : 27     2 :32m   0 .06s   0 .06s -bash
     root     pts/ 0     192.168 . 10.1      12 : 38     7 .00s   0 .47s   0 .36s bash

将minion端自定义的grains信息与top.sls联系:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@node1 salt]# cat /srv/salt/apache.sls
apache-install:
   pkg.installed:
     - names:
       - httpd
       - httpd-devel
  
apache-service:
   service.running:
     - name: httpd
     - enable: True
     - reload: True
[root@node1 salt]# cat /srv/salt/top.sls
base:
   'web:nginx'  :
     - match: grain
- apache
[root@node1 salt]# salt  '*'  state.highstate
注:匹配web:nginx,使用grains匹配,匹配成功的执行apache.sls这个状态



Pillar

数据存储在master端,在master端定义,指定给对应的minion,可以使用saltutil.refresh_pillar刷新,常用于存储master指定的数据,只有指定的minion可以看到。用于敏感数据保存


1.系统默认pillar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@node1 ~]# vim /etc/salt/master
pillar_opts: Ture        #这里只是查看一下,查看之后将其关闭
[root@node1 ~]# /etc/init.d/salt-master restart
[root@node1 ~]# salt  '*'  pillar.items    #查看系统默认的pillar,key value的形式
[root@node1 ~]# salt  '*'  pillar.items
node1:
     ----------
     master:
         ----------
         __role:
             master
         auth_mode:
             1
         auto_accept:
             False
         cache_sreqs:
             True
         cachedir:
             / var /cache/salt/master
         cli_summary:
             False
.......................................

 

2.自定义pillar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#编辑配置文件
[root@node1 ~]# vim /etc/salt/master
pillar_roots:
   base:
     - /srv/pillar
[root@node1 ~]# mkdir /srv/pillar
#写一个apache的状态
[root@node1 ~]# cat /srv/pillar/apache.sls
{%  if  grains[ 'os' ] ==  'CentOS'  %}
apache: httpd
{% elif grains[ 'os' ] ==  'Debian'  %}
apache: apache2
{% endif %}
注:使用grains收集信息,如果系统是centos,那么apache的名字就叫httpd。系统是Debian的时候,apache叫apache2



#写一个tops.sls

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[root@node1 ~]# cat /srv/pillar/top.sls     #将定义的apache状态指定给所有minion
base:
   '*' :
     - apache
  
[root@node1 ~]# salt  '*'  saltutil.refresh_pillar    #刷新一下
node2:
     True
node1:
True
  
[root@node1 ~]# salt  '*'  pillar.items
node1:
     ----------
     apache:
         httpd
node2:
     ----------
     apache:
         httpd
  
[root@node1 ~]# salt -I  'apache:httpd'  test.ping
node1:
     True
node2:
     True


 本文转自 fxl风 51CTO博客,原文链接:http://blog.51cto.com/fengxiaoli/1958010



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
Linux Apache 开发工具
|
Web App开发 存储 应用服务中间件
|
消息中间件 监控 网络协议
SaltStack安装Apache/Mysql/PHP部署Wordpress
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。 SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。 master监听4505和4506端口,4505对应的是ZMQ的PUB system,用来发送消息,4506对应的是REP system是来接受
177 0