saltstack数据系统Grains和Pillar

一.Grains简介

grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这新信息对不同业务进行个性化配置。

grains是SaltStack当中的一个数据系统,当Minion启动时Grains会把Minion的数据收集起来,比如操作系统版本、CPU 位数等。由于采用的是静态收集,只有当Minion发生重启时数据才会发生变化,在Grains的实际运用中常用于对多台Minion做操作时进行一些条件匹配,比如有上百台Minion服务器,只需要对操作系统为CentOS的做一些操作等

二.Grains模块的应用

1.罗列出所有Minion的所有信息

[root@server1 salt]# salt '*' grains.items

在这里插入图片描述
通过grains来做信息过滤,使用-G选项:

[root@server1 salt]# salt -G 'cpuarch:x86_64' cmd.run 'uptime'      在所有64位CPU服务器上执行uptime 

在这里插入图片描述

[root@server1 nginx]# salt server2 grains.item
[root@server1 nginx]# salt server2 grains.item os
[root@server1 nginx]# salt server2 grains.item fqdn
[root@server1 nginx]# salt server2 grains.item nodename

在这里插入图片描述

2.当grains.items里的模块不满足当前情况,还可以自定义Grains,比如在server2(minion)添加一个apache模块

[root@server2 ~]# vim /etc/salt/minion
[root@server2 ~]# systemctl restart salt-minion

在这里插入图片描述

[root@server1 nginx]# salt server2 grains.item roles
server2:
    ----------
    roles:
        - apache
[root@server1 salt]# salt -G 'roles:apache' test.ping
server2:
    True

在这里插入图片描述
3.如果不想在minion上的/etc/salt/minion添加模块,那么也可以在master上创建/etc/salt/_grains目录并且编辑文件添加模块

[root@server1 salt]# mkdir /etc/salt/_grains
[root@server1 salt]# ls
apache  _grains  nginx  pkgs  top.sls
[root@server1 salt]# cd _grains/
[root@server1 _grains]# ls
my_grains.py
[root@server1 _grains]# cat my_grains.py 
def my_grains():
     grains = {}
     grains['hello'] = 'world'
     grains['salt'] = 'stack'
     return grains
[root@server1 _grains]# salt '*' saltutil.sync_grains       ##刷新

在这里插入图片描述

在这里插入图片描述

4.测试:在/srv/salt里面有top.sls文件在里面可以使用grains匹配的模块对已经添加的minion服务器进行相应的服务推送

[root@server1 salt]# ls
apache  _grains  nginx  pkgs  top.sls
[root@server1 salt]# vim top.sls 
[root@server1 salt]# cat top.sls 
base:
  'roles:apache':
    - match: grain
    - apache.install
  'roles:nginx':
    - match: grain
    - nginx.service
[root@server1 salt]# salt '*' state.highstate

在这里插入图片描述

三.pillar的应用

pillar简介:

  • Pillar是Salt非常重要的一个组件,它用于给特定的minion定义任何你需要的数据,这些数据可以被Salt的其他组件使用。

  • 给minion指定它想要的数据,给哪个minion指定,哪个minion能看到,,其他minion看不到,安全性得到了保障,在master端设置的

[root@server1 salt]# vim /etc/salt/master		##打开pillar模块
828 pillar_roots:
829   base:
830     - /srv/pillar
 
[root@server1 salt]# systemctl restart salt-master
[root@server1 salt]# cd /srv/pillar/
[root@server1 pillar]# ls
top.sls  web
[root@server1 pillar]# cat top.sls 
base:
  '*':
    - web.vars
[root@server1 pillar]# cat web/vars.sls 
{% if grains['fqdn'] == 'server2' %}
webserver: httpd
{% elif grains['fqdn'] == 'server3' %}
webserver: nginx
{% endif %}
[root@server1 pillar]# salt '*' saltutil.refresh_pillar
server3:
    True
server2:
    True

[root@server1 pillar]# salt '*' pillar.items
server3:
    ----------
    webserver:
        nginx
server2:
    ----------
    webserver:
        httpd

四.grains和Pillar的区别

1.存储位置

grains:minion端
pillar:master端

2.数据类型

grains:静态数据
pillar:动态数据

3.数据采集更新方式

grains:minion启动时收集,也可以使用saltutil.sync_grains进行刷新

pillar:在master端定义,指定给对应minion,
可以使用saltutil.sync_pillar刷新。

4.应用

grains:存储minion基本数据。比如用于匹配minion,自身数据可以用来做资产管理等。
pillar:存储master指定的数据,只有指定的minion可以看到,用于敏感。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值