zoukankan      html  css  js  c++  java
  • saltstack数据系统Grains

    1.什么是Grains系统

      Grains是SaltStack收集的有关底层管理系统的静态信息。 SaltStack收集的Grains信息包括操作系统版本、域名、IP地址、内核、操作系统类型、内存以及许多其他系统属性。
      您可以将自定义的grains添加到Salt Minion的/etc/salt/grains文件中,或放置在Grains部分下的Salt Minion配置文件中。 例如,许多用户为每个Salt Minion添加一个称为角色的定制grain来描述系统的功能。

    2.利用grains获取信息

    2.1 查看Grains拥有那些函数

    [root@localhost]# salt "agent1" sys.list_functions grains
    agent1:
        - grains.append
        - grains.delkey
        - grains.delval
        - grains.equals
        - grains.fetch
        - grains.filter_by
        - grains.get
        - grains.get_or_set_hash
        - grains.has_value
        - grains.item
        - grains.items
        - grains.ls
        - grains.remove
        - grains.set
        - grains.setval
        - grains.setvals
        ...
    

    每个命令的帮助信息又可以通过sys.doc查看,如下:
    [root@localhost]# salt 'agent1' sys.doc grains

    2.2 获取主机item信息

    [root@localhost salt]# salt '*' grains.ls
    agent1:
        - SSDs
        - biosreleasedate
        - biosversion
        - cpu_flags
        - cpu_model
        - cpuarch
        - disks
        - dns
        - domain
        - fqdn
        - fqdn_ip4
        - fqdn_ip6
        - fqdns
        - gid
        ......
    

    查看item的详细信息

    [root@localhost salt]# salt '*' grains.items
    agent1:
        ----------
        SSDs:
        biosreleasedate:
            04/13/2018
        biosversion:
            6.00
        cpu_flags:
            - fpu
            - vme
            - de
            - pse
            - tsc
            - msr
            ......  
            # 此处显示还有很多
        cpu_model:
            Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz
        cpuarch:
            x86_64
        disks:
            - sda
            - sr0
            - dm-0
            - dm-1
        ......
    

    查看某项或多项item值

    [root@localhost salt]# salt '*' grains.item ipv4
    agent1:
        ----------
        ipv4:
            - 127.0.0.1
            - 192.168.1.4
            
    [root@localhost salt]# salt '*' grains.item localhost ipv4
    agent1:
        ----------
        ipv4:
            - 127.0.0.1
            - 192.168.1.4
        localhost:
            wang
    

    2.3 通过Grains模块定义Grains

    方式一:命令行操作

    [root@localhost salt]# salt 'agent1' grains.append hosttype 'redis-slave'
    agent1:
        ----------
        hosttype:
            - redis-slave
    [root@localhost salt]# salt '*' grains.item hosttype
    agent1:
        ----------
        hosttype:
            - redis-slave
    [root@localhost salt]# salt 'agent1' grains.setvals "{'city':'beijing'}"
    agent1:
        ----------
        city:
            beijing
    [root@localhost salt]# salt '*' grains.item city
    agent1:
        ----------
        city:
            beijing
    

    这样配置后,会在minion主机端生成配置文件grains ,如下:

    [root@wang ~]# cat /etc/salt/grains
    city: beijing
    hosttype:
    - redis-slave
    

    方式二:
    1.在配置文件中操作(minion端)

    • /etc/salt/minion.d/grains.conf
    • /etc/salt/minion
    • /etc/salt/grains
    在三个文件中配置都会生效,这里在/etc/salt/minion中配置
    # Custom static grains for this minion can be specified here and used in SLS
    # files just like all other grains. This example sets 4 custom grains, with
    # the 'roles' grain having two values that can be matched against.
    #grains:
    #  roles:
    #    - webserver
    #    - memcache
    #  deployment: datacenter4
    #  cabinet: 13
    #  cab_u: 14-15
    grains:
      roles: apache
      
    在master节点查看item
    [root@localhost salt]# salt 'agent1' grains.item roles
    agent1:
        ----------
        roles:
            apache
    
    
    注:如果/etc/salt/minion.d/grains.conf中已经存在的自定义items,
    再通过执行grains.append或grains.setval去执行时,发现会以
    grains.conf中的为准,虽然在/etc/salt/grains中也有内容生成。
    而且执行grains.append操作后,/etc/salt/minion.d/grains.conf
    中已存在的值会覆盖/etc/salt/grains中的重复值。
    /etc/salt/minion.d/grains.conf (或/etc/salt/minion)  > /etc/salt/grains配置中的优先级。
    

    配置文件中操作,重启客户端才会生效。修改/etc/salt/grains不重启服务的方法,刷新命令如下

    salt '*' saltutil.sync_grains

    参考链接:http://www.361way.com/saltstack-grains/5104.html

    2.grains_module的方式设置(master端)

    首先在master上建立模块对应的目录:
    # mkdir -pv /srv/salt/_grains

    然后写入一个简单模块

    #vi /srv/salt/_grains/my_grain_mod.py 
    import time 
    def now():
        grains = {}
        grains['now'] = time.time() 
        return grains
    
    

    然后同步模块到minion:

    [root@localhost ~]# salt 'agent1' saltutil.sync_all
    agent1:
        ----------
        beacons:
        clouds:
        engines:
        grains:
            - grains.my_grain_mod
        log_handlers:
        matchers:
        modules:
        output:
        proxymodules:
        renderers:
        returners:
        sdb:
        serializers:
        states:
        thorium:
        utils:
    

    重新加载一次模块:

    [root@localhost ~]# salt 'agent1' sys.reload_modules
    agent1:
        True
    

    查看新设置得Grains:

    [root@localhost ~]# salt 'agent1' grains.item now
    agent1:
        ----------
        now:
            1568104340.697266
    
  • 相关阅读:
    ORACLE中的TOP-N查询(TOP-N分析)、分页查询
    ORACLE复杂查询之子查询
    ORACLE复杂查询之连接查询
    利用rand7() 产生rand10()(腾讯)
    汉罗塔1(递归和分治)
    数位dp(不要62)
    数位dp(二进制01问题)
    多重背包
    模拟(所有边权)
    模拟(进制)
  • 原文地址:https://www.cnblogs.com/wangyajian/p/11586990.html
Copyright © 2011-2022 走看看