SaltStack之数据系统

7 篇文章 0 订阅
5 篇文章 0 订阅

1. SaltStack数据系统

SaltStack有两大数据系统,分别是:

  • Grains
  • Pillar

2.1 SaltStack组件之Grains

Grains是SaltStack的一个组件,其存放着minion启动时收集到的信息。

Grains是SaltStack组件中非常重要的组件之一,因为我们在做配置部署的过程中会经常使用它,Grains是SaltStack记录minion的一些静态信息的组件。可简单理解为Grains记录着每台minion的一些常用属性,比如CPU、内存、磁盘、网络信息等。我们可以通过grains.items查看某台minion的所有Grains信息。

Grains的功能:

  • 收集资产信息

Grains应用场景:

  • 信息查询
  • 在命令行下进行目标匹配
  • 在top file中进行目标匹配
  • 在模板中进行目标匹配
//列出所有grains的key和value,如系统版本,ip地址,网卡等
[root@master base]# salt 'slave' grains.items
slave:
    ----------
    biosreleasedate:        //bios的时间
        07/29/2019        
    biosversion:            //bios的版本
        6.00             
    cpu_flags:            //cpu相关的属性
        - fpu
        - vme
        - de
        - pse
        - tsc
        - msr
        - pae
        - mce
        - cx8
        - apic
        - sep
        - mtrr
        - pge
        - mca
        - cmov
        - pat
        - pse36
        - clflush
        - mmx
.......//单独看ip地址
[root@master base]# salt '*' grains.get fqdn_ip4
master:
    - 192.168.216.200
slave:
    - 192.168.216.188
    - 192.168.122.1

//看网卡
[root@master base]# salt 'slave' grains.get hwaddr_interfaces
slave:
    ----------
    eth0:
        00:0c:29:fd:a8:69
    lo:
        00:00:00:00:00:00
    virbr0:
        52:54:00:46:4d:a4
    virbr0-nic:
        52:54:00:46:4d:a4

//单独看某块网卡
[root@master base]# salt 'slave' grains.get hwaddr_interfaces:eth0
slave:
    00:0c:29:fd:a8:69

//根据目标匹配
/匹配centos系统
[root@master base]# salt -G 'os:CentOS' test.ping
slave:
    True
master:
    True

//同样可以在topfile里面指定
/centos的主机执行apache状态文件
[root@master ~]# vim /srv/salt/base/top.sls
base:
  'os:CentOS':
    - match: grain
    - web.apache.apache

自定义Grains的两种方法:

  • minion配置文件,在配置文件中搜索grains
  • 在/etc/salt下生成一个grains文件,在此文件中定义(推荐方式)
//写一个自定义grains
[root@master base]# vim /etc/salt/grains
[root@master base]# cat /etc/salt/grains
test-grains: 1234

//重启生效
[root@master ~]# systemctl restart salt-minion

[root@master base]# salt '*' grains.get test-grains
slave:
master:
    Minion did not return. [No response]
    The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:
    
    salt-run jobs.lookup_jid 20211102080211076334
ERROR: Minions returned with non-zero exit code
[root@master base]# salt-run jobs.lookup_jid 20211102080211076334
master:
    1234
slave:
//grains在master上编写所以salve没有输出,而且重启minion需要一点时间所以这里没有响应所以需要等待一会

//修改grains
[root@master base]# vim /etc/salt/grains
[root@master base]# cat /etc/salt/grains
test-grains: abcd

//使他生效
[root@master base]# salt '*' saltutil.sync_grains
master:
slave:

//测试
[root@master base]# salt '*' grains.get test-grains
slave:
master:
    Minion did not return. [No response]
    The minions may not have all finished running and any remaining minions will return upon completion. To look up the return data for this job later, run the following command:
    
    salt-run jobs.lookup_jid 20211102081200242524
ERROR: Minions returned with non-zero exit code
[root@master base]# salt-run jobs.lookup_jid 20211102081200242524
master:
    abcd
slave:
//可以通过自定义grains来控制我们想要控制的主机

2.2 SaltStack组件之Pillar

Pillar也是SaltStack组件中非常重要的组件之一,是数据管理中心,经常配置states在大规模的配置管理工作中使用它。Pillar在SaltStack中主要的作用就是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的定义存储格式与Grains类似,都是YAML格式。

在Master配置文件中有一段Pillar settings选项专门定义Pillar相关的一些参数:

[root@master base]# vim /etc/salt/master
....取消注释
 844 pillar_roots:
 845  base:
 846    - /srv/pillar/base  //自定义位置
 847 
 
 //重启生效
[root@master base]# systemctl restart salt-master.service 

//提供目录
[root@master ~]# mkdir /srv/pillar/base -p

默认Base环境下Pillar的工作目录在/srv/pillar目录下。若你想定义多个环境不同的Pillar工作目录,只需要修改此处配置文件即可。

Pillar的特点:

  • 可以给指定的minion定义它需要的数据
  • 只有指定的人才能看到定义的数据
  • 在master配置文件里设置

pillar自定义数据:
在master的配置文件里找pillar_roots可以看到其存放pillar的位置

[root@master ~]# salt '*' pillar.items
slave:
    ----------
master:
    ----------
[root@master ~]# vim /etc/salt/master
# master config file that can then be used on minions.
pillar_opts: True

# The pillar_safe_render_error option prevents the master from passing pillar


//重启master并查看pillar的信息
[root@master ~]# systemctl restart salt-master
[root@master ~]# salt '*' pillar.items
信息过多此处省略

[root@master ~]# vim /srv/pillar/base/apache.sls
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}

//定义top file入口文件
[root@master ~]# vim /srv/pillar/base/top.sls
base:       //指定环境
  'master':     //指定目标,谁能看到
    - apache            //引用apache.sls或apache/init.sls
//这个top.sls文件的意思表示的是master这台主机的base环境能够访问到apache这个pillar

//测试
[root@master ~]# salt '*' pillar.items
master:
    ----------
    apache:
        httpd
slave:
    ----------
//没有指定salve,所以没有信息

//在salt下修改apache的状态文件,引用pillar的数据
[root@master ~]# vim /srv/salt/base/web/apache/apache.sls
apache-install:
  pkg.installed:
    - name: {{ pillar['apache'] }}

apache-service:
  service.running:
    - name: {{ pillar['apache'] }}
    - enable: True

//执行高级状态文件
[root@master ~]# salt 'slave' state.highstate
slave:
----------
          ID: nginx-install
    Function: pkg.installed
        Name: nginx
      Result: True
     Comment: All specified packages are already installed
     Started: 01:04:32.589722
    Duration: 1252.718 ms
     Changes:   
----------
          ID: nginx-service
    Function: service.running
        Name: nginx
      Result: True
     Comment: The service nginx is already running
     Started: 01:04:33.843917
    Duration: 51.947 ms
     Changes:   

Summary for slave
------------
Succeeded: 2
Failed:    0
------------
Total states run:     2
Total run time:   1.305 s

[root@master ~]# cat /srv/salt/base/web/apache/apache.sls
apache-install:
  pkg.installed:
    - name: "  {{ pillar['apache'] }} "

apache-service:
  service.running:
    - name: " {{ pillar['apache'] }} "
    - enable: True
    
//与ansible不同的是引用pillar文件加不加双引号都可正常执行

2.3 Grains与Pillar的区别

`存储位置类型采集方式应用场景
Grainsminion静态minion启动时采集可通过刷新避免重启minion服务
1.信息查询
2.在命令行下进行目标匹配
3.在top file中进行目标匹配
4.在模板中进行目标匹配
Pillarmaster动态指定,实时生效
1.目标匹配
2.敏感数据配置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值