zoukankan      html  css  js  c++  java
  • SaltStack 05-SaltStack数据系统Grains

    Grains:静态数据

    • 当Minion启动的时候收集的Minion本地的相关信息(只收集一次)
    • 操作系统版本,内核版本,CPU,内存,硬盘,设备型号,序列号
    • 不重启minion,这些信息数据是不会改变的。

    主要作用:

    • 资产管理,信息查询
    • 用于目标选择
    • 配置管理中使用

    自定义Grans的常用方法:

    • 通过Minion配置文件定义
    • 通过Grains相关模块定义
    • 通过Python脚本定义

    信息查询

    salt 'saltStack01' grains.ls		    # 列出所有的grains数据的key
    salt 'saltStack01' grains.items		# 列出信息所有信息
    salt '*' grains.item os				# 列出单个key信息
    salt '*' grains.item fqdn_ip4		    # 列出所有主机的IP地址
    

    目标选择

    salt -G 'os:CentOS' test.ping		    # 查看属于CentOS的主机
    salt -G 'os:CentOS' cmd.run 'ip a' 	# 让属于CentOS的主机的执行该命令
    

    Grians优先级

    1. 系统自带
    2. grains文件写的
    3. minion配置文件写的
    4. 自己写的

    通过Minion配置文件定义Grains

    1、修改Minion配置文件

    [root@saltStack01 minion.d]# cat /etc/salt/minion |grep -A 6 'grains:'
    grains:
      roles:
        - webserver
        - memcache
    #  deployment: datacenter4
    #  cabinet: 13
    #  cab_u: 14-15
    [root@saltStack01 minion.d]#
    

    2、为了统一管理Minion的Grains信息,需要把配置在/etc/salt/grains中

    [root@saltStack01 salt]# cat /etc/salt/grains 
    name: liang
    test1: 
      - test-12
      - test-24
    [root@saltStack01 salt]#
    

    3、重启Minion服务:

    systemctl restart salt-minion
    

    4、验证:

    [root@saltStack01 salt]# salt '*salt*' grains.item roles
    saltStack01:
        ----------
        roles:
            - webserver
            - memcache
    [root@saltStack01 salt]# salt '*salt*' grains.item name
    saltStack01:
        ----------
        name:
            liang
    [root@saltStack01 salt]# salt '*salt*' grains.item test1
    saltStack01:
        ----------
        test1:
            - test-12
            - test-24
    [root@saltStack01 salt]#
    

    通过Grains模块定义Grains

    grains.append命令

    [root@saltStack01 salt]# salt '*salt*' grains.append salt 'haha'
    saltStack01:
        ----------
        salt:
            - haha
    [root@saltStack01 salt]# salt '*salt*' grains.item salt
    saltStack01:
        ----------
        salt:
            - haha
    [root@saltStack01 salt]#
    

    grains.setvals命令

    [root@saltStack01 salt]# salt '*salt*' grains.setvals "{'salt': 'good','abc': 'cool'}"
    saltStack01:
        ----------
        abc:
            cool
        salt:
            good
    [root@saltStack01 salt]# salt '*salt*' grains.item salt
    saltStack01:
        ----------
        salt:
            good
    [root@saltStack01 salt]# cat /etc/salt/grains
    abc: cool
    name: liang
    salt: good
    test1:
    - test-12
    - test-24
    [root@saltStack01 salt]#
    

    通过Python扩展Grains

    • 可大批量设备中,我们需要区分每台设备的业务角色

    1、在Master上编写一个Python脚本

    [root@saltStack01 ~]# mkdir -p /srv/salt/_grains
    [root@saltStack01 ~]# cat /srv/salt/_grains/example.py 
    #!/usr/bin/python
    def grains():
        local={}
        test={'key': 'vaule','key1': 'vaule1','key2': 'vaule2'}
        local['list']= [1,2,3,4]
        local['string']= 'str'
        local['dict']= test
        return local
    [root@saltStack01 ~]# cat /srv/salt/_grains/info.py 
    #!/usr/bin/python
    import commands
    def role():
        information={}
        information['disk_num'] = commands.getoutput('fdisk -l |grep Disk|wc -l')
        information['hostname'] = commands.getoutput('hostname')
        return information
    [root@saltStack01 _grains]#
    

    2、把脚本同步到minion上去

    [root@saltStack01 ~]# salt '*salt*' saltutil.sync_grains
    saltStack01:
        - grains.example
        - grains.info
    [root@saltStack01 ~]# salt '*salt*' cmd.run 'ls /var/cache/salt/minion/extmods/grains/'
    saltStack01:
        example.py
        example.pyc
        info.py
        info.pyc
    [root@saltStack01 ~]#
    

    3、验证

    [root@saltStack01 ~]# salt '*salt*' grains.item list string dict
    saltStack01:
        ----------
        dict:
            ----------
            key:
                vaule
            key1:
                vaule1
            key2:
                vaule2
        list:
            - 1
            - 2
            - 3
            - 4
        string:
            str
    [root@saltStack01 ~]# salt '*salt*' grains.item disk_num
    saltStack01:
        ----------
        disk_num:
            3
    [root@saltStack01 ~]#
    

    Grains相关命令:

    [root@saltStack01 ~]# salt 'centos6' sys.list_functions grains
    centos6:
        - grains.append
        - grains.delval
        - grains.filter_by
        - grains.get
        - grains.get_or_set_hash
        - grains.has_value
        - grains.item
        - grains.items
        - grains.ls
        - grains.remove
        - grains.setval
        - grains.setvals
    [root@saltStack01 ~]# salt 'centos6' sys.doc grains
    
  • 相关阅读:
    win7通过配置怎么样ODBC数据源
    apache2.2 虚拟主机配置
    Matlab曲面拟合和插值
    查询记录rs.previous()使用
    阅读《平庸的世界》后感觉 (两)
    苹果公司的新的编程语言 Swift 高级语言()两--基本数据类型
    UVA 12075
    [LeetCode] Search a 2D Matrix [25]
    js 数组,字符串,JSON,bind, Name
    linux系统下怎么安装.deb文件?
  • 原文地址:https://www.cnblogs.com/liangjingfu/p/9504437.html
Copyright © 2011-2022 走看看