• Saltstack数据系统


    1.数据系统Grains

    Grains静态数据

    1.Grains数据存储在minion端,minion端的数据信息
    2.当minion启动时会收集Minion自身的状态信息后才加载grins信息,所以grains数据是静态的。比如: 操作系统版本,内核版本,CPU,内存,硬盘。设备型号。

     

    Minion收集的信息,可以作为Master端匹配目标
    Master端自定义grains设置, 需要执行命令推送给Minion端
    Master端推送的数据会存储在端的/var/cache/salt

    1.资产管理, 信息查询

    //列出所有可打印的状态模块
    [root@salt0-master ~]# salt '*' grains.ls
    //打印所有的状态信息
    [root@salt0-master ~]# salt '*' grains.items
    //列出每台minion的本地IP地址
    [root@salt0-master ~]# salt '*' grains.item fqdn_ip4
    

    2.salt远程执行的目标匹配

    //修改minion配置文件,定义grains
    [root@salt1-minion ~]# vim /etc/salt/minion 
    grains:
      roles:
        - webserver
      os_version:
        - centos7u4
    
    //重启minion
    [root@salt1-minion ~]# systemctl restart salt-minion
    //目标匹配方式
    [root@salt1-minion ~]# salt -G 'os_version:centos7u4' test.ping
    

    3.Master端编写一个GrainsPython脚本推送给minion配置管理案例

    [root@salt0-master ~]# mkdir /srv/salt/_grains -p && cd /srv/salt/_grains
    [root@salt0-master _grains]# cat /srv/salt/_grains/my_grains.py 
    #!/usr/bin/env python
    #-*- coding: utf-8 -*-
    
    def mygrains():
        #设置一个字典
        grains = {}
        #设置字典的值
        grains['iaas'] = 'openstack'
        grains['pass'] = 'Docker'
        #返回这个字典
        return grains
        
    # 刷新Grains,从Master推送给所有的Minion客户端
    [root@salt0-master ~]# salt '*' saltutil.sync_grains
    

    4.Grians优先级问题

    1.Grains默认获取的状态信息
    2.在minion配置文件进行自定义
    3.在Master端定义grains推送Minion

    2.数据系统Pillar

    Pillar是动态的,Pillar存储在master端,提供给minion端。
    Pillar主要记录一些加密信息, 可以确保这些敏感数据不被其他minion看到。
    PillarSaltStack中主要作用是存储和定义配置管理中需要的一些数据,比如软件版本号、用户名密码等信息,它的存储格式跟Grains类似,都是YAML格式。

    1.在Master端定义Pillar

    [root@salt0-master ~]# vim /etc/salt/master
    pillar_roots:
      base:
        - /srv/pillar
    
    [root@salt0-master ~]# systemctl restart salt-master
    [root@salt0-master ~]# mkdir /srv/pillar
    [root@salt0-master ~]# cd /srv/pillar/
    [root@salt0-master pillar]# cat zabbix.sls
    Zabbix_Server: 192.168.70.170
    Zabbix_Name: salt0-master.examp.com
    

    2.编写TopFile指定Minion端可以使用

    [root@salt0-master pillar]# cat top.sls 
    base:
      'salt2-minion.example.com':
        - zabbix
    

    3.刷新Pillar

    [root@saltstack01 ~]# salt '*' saltutil.refresh_pillar
    

    4.获取对应pillar

    [root@salt0-master ~]# salt '*' pillar.items
    salt2-minion.example.com:
        ----------
        Zabbix_Name:
            salt0-master.examp.com
        Zabbix_Server:
            192.168.70.171
    
    # 获取指定的key
    [root@salt0-master ~]# salt 'salt2-minion.example.com' pillar.item Zabbix_Server
    

    注意: 如果Master更新了新的数值, 需要刷新Pillar至Minion才可获取

    5.pillarGrains对比

    类型     数据采集方式   应用场景                   定义位置
    Grains   静态         minion启动时收集  数据查询  目标选择  配置管理   minion
    Pillar   动态         master进行自定义  目标选择  配置管理  敏感数据   master
  • 相关阅读:
    如何实现对ELK各组件的监控?试试Metricbeat
    Dubbo日志链路追踪TraceId选型
    Spring Security如何优雅的增加OAuth2协议授权模式
    聊一聊:MyBatis和Spring Data JPA的选择问题
    Java微服务 vs Go微服务,究竟谁更强!?
    你一定需要知道的高阶JAVA枚举特性!
    当音乐学博士搞起编程,用一本书改变了Java世界!
    Spring Boot 2.x基础教程:使用Flyway管理数据库版本
    文件上传的单元测试怎么写?
    Spring Boot 2.x基础教程:多个文件的上传
  • 原文地址:https://www.cnblogs.com/henrylinux/p/11498078.html
Copyright © 2020-2023  润新知