第二章 SaltStack的数据系统

2-1 SaltStack数据系统-Grains详解

[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.ls
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.items
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.item fqdn 
saltstack-node1.example.com:
    ----------
    fqdn:
        saltstack-node1.example.com
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.get fqdn 
saltstack-node1.example.com:
    saltstack-node1.example.com

Minion启动时收集(静态数据)
Grains应用场景

  • Grains可以在state系统中使用,用于配置管理模块。
  • Grains可以target中使用,在用来匹配Minion,比如匹配操作系统,作用-G选项。
  • Grains可以用于信息查询,Grains保存着收集到的客户端的详细信息。

注意:Grains只在Minion启动时才会收集

自定义两个Grains:

[root@saltstack-node1 ~]# vim /etc/salt/minion
grains:
  roles: nginx
  env: test

现在我们获取是没有的,需要重启Minion:

[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.get env
saltstack-node1.example.com:
[root@saltstack-node1 ~]# /etc/init.d/salt-minion restart
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.get env
saltstack-node1.example.com:
    test
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.get roles
saltstack-node1.example.com:
    nginx
#你看有了

还有一种定义方式:

[root@saltstack-node1 ~]# vim /etc/salt/grains
cloud: openstack
#标识说这是一个openstack的节点
[root@saltstack-node1 ~]# /etc/init.d/salt-minion restart                    
[root@saltstack-node1 ~]# salt 'saltstack-node1.example.com' grains.get cloud
saltstack-node1.example.com:
    openstack

这样我就不需要Minion端的nginx的IP:

[root@saltstack-node1 ~]# salt -G role:nginx cmd.run '/usr/local/nginx/sbin/nginx -s reload'
[root@saltstack-node1 ~]# salt -G roles:nginx cmd.run 'uptime'
saltstack-node1.example.com:
     07:47:34 up  2:14,  1 user,  load average: 0.20, 0.12, 0.10
[root@saltstack-node1 ~]# salt -G os:centos cmd.run 'uptime'
saltstack-node1.example.com:
     04:14:59 up 1 min,  1 user,  load average: 0.32, 0.14, 0.05
saltstack-node2.example.com:
     04:14:59 up 1 min,  1 user,  load average: 0.09, 0.05, 0.02

编写个top.sls:

base:
  'role:nginx':
    - match: grain
    - web.nginx

2-2 SaltStack数据系统-Pillar详解

存储位置:

  • 存储在master端,存放需要提供给minion的信息

应用场景:

  • 敏感信息:每个minion只能访问master分配给自己的
[root@saltstack-node1 ~]# vim /etc/salt/master
pillar_roots:
  base:
    - /srv/pillar
[root@saltstack-node1 ~]# mkdir -p /srv/pillar
[root@saltstack-node1 ~]# /etc/init.d/salt-master restart
[root@saltstack-node1 ~]# cd /srv/pillar/
[root@saltstack-node1 pillar]# vim  zabbix.sls
Zabbix_Server: 192.168.56.21
[root@saltstack-node1 pillar]# vim top.sls
base:
  'saltstack-node2.example.com':
    - zabbix
[root@saltstack-node1 ~]# salt '*' saltutil.refresh_pillar
saltstack-node2.example.com:
    True
saltstack-node1.example.com:
    True
[root@saltstack-node1 ~]# salt '*' pillar.item Zabbix_Server
saltstack-node1.example.com:
    ----------
saltstack-node2.example.com:
    ----------
    Zabbix_Server:
        192.168.56.21
[root@saltstack-node1 ~]# salt -G 'os:centos' test.ping
saltstack-node2.example.com:
    True
saltstack-node1.example.com:
    True
[root@saltstack-node1 ~]# salt -I 'Zabbix_Server:192.168.56.21' test.ping        
saltstack-node2.example.com:
    True

2-3 SaltStack数据系统-Grains VS Pillar

名称 存储位置 数据类型 数据采集更新方式 应用
Grains Minion端 静态数据 Minion启动时收集,也可以使用saltutil_sync_grains进行刷新 存储Minion基本数据。比如用于匹配Minion,自身数据可以用来做资产管理等
Pillar Master端 动态数据 在Master端定义,指定给对应的Minion.可以使用saltutil.refresh_pillar刷新 存储Master指定的数据,只有指定的Minion可以看到。用于敏感数据保存
posted @ 2017-09-11 10:04  ShenghuiChen  阅读(187)  评论(0编辑  收藏  举报