zoukankan      html  css  js  c++  java
  • saltstack grains

    saltstack的grains类似于ansible的setup模块,主要作用为手机客户端的主机基本信息(cpu,内核,os,virtual等),定义在客户端

    [root@k8s_master ~]# cat /etc/salt/master |grep -v "^#|^$"
    cachedir: /var/cache/salt/master
    auto_accept: True
    file_recv: True
    file_roots:
      base:
        - /root
    nodegroups:
       master1: 'L@k8s_master'
       agents: 'L@k8s_node1,k8s_node2'

    查看主机的详细信息

    salt -N 'master1' grains.items

    查看所有键(saltstack自带

    [root@k8s_master ~]# salt -N master1 grains.ls
    k8s_master:
        - SSDs
        - biosreleasedate
        - biosversion
        - cpu_flags
        - cpu_model
        - cpuarch
        - domain
        - fqdn
        - fqdn_ip4
        - fqdn_ip6
        - gpus
        - host
        - hwaddr_interfaces
        - id
        - init
        - ip4_interfaces
        - ip6_interfaces
        - ip_interfaces
        - ipv4
        - ipv6
        - kernel
        - kernelrelease
        - locale_info
        - localhost
        - lsb_distrib_id
        - machine_id
        - manufacturer
        - master
        - mdadm
        - mem_total
        - nodename
        - num_cpus
        - num_gpus
        - os
        - os_family
        - osarch
        - oscodename
        - osfinger
        - osfullname
        - osmajorrelease
        - osrelease
        - osrelease_info
        - path
        - productname
        - ps
        - pythonexecutable
        - pythonpath
        - pythonversion
        - saltpath
        - saltversion
        - saltversioninfo
        - selinux
        - serialnumber
        - server_id
        - shell
        - systemd
        - virtual
        - zmqversion

    用法示例: salt <匹配主机> grains.item  <grains.ls>获取的键

    [root@k8s_master ~]# salt -N master1 grains.item ipv4
    k8s_master:
        ----------
        ipv4:
            - 10.1.14.0
            - 127.0.0.1
            - 172.17.0.1
            - 192.168.132.148

     自定义grains键及数据

      首先,主控端(master端)编写获取数据的脚本,然后同步到客户端(minion),在主控端的base目录(在/etc/salt/master配置文件中指定的目录,默认为/srv/salt目录)下生成_grains目录,执行install -d /srv/salt/_grains开始编写代码此例子为获取主机系统允许的最大打开文件数

    [root@k8s_master ~]# cat /root/_grains/test_grains.py 
    #!/usr/bin/env python
    #-*-coding:utf-8-*-
    
    import os,sys,commands
    
    def get_custom_grains():
    	grains = {}
    	_open_file=65535
    	try:
    		getulimit = commands.getstatusoutput('source /etc/profile;ulimit -n')    ##获取客户端文件描述符数量(可通过其他命令获取)
    	except Exception,e:
    		print e
    	#print getulimit,type(getulimit)     #此处打印的为一个元组
    	if getulimit[0] == 0:
    		_open_file=int(getulimit[1])
    	grains['max_open_files'] = _open_file  #为grains的新键(max_open_files)赋值 为_open_file
    	return grains                #返回grains返回值
    

    同步并检查本地文件

    [root@k8s_master ~]# salt 'k8s_master' saltutil.sync_all
    [root@k8s_master ~]# ls /var/cache/salt/minion/files/base/_grains/test_grains.py   #生成文件
    /var/cache/salt/minion/files/base/_grains/test_grains.py
    [root@k8s_master ~]# ls /var/cache/salt/minion/extmods/grains/test_grains.py
    /var/cache/salt/minion/extmods/grains/test_grains.py

    重新加载模块(刷新模块)

    [root@k8s_master ~]# salt 'k8s_master' sys.reload_modules    #刷新重载模块
    k8s_master:
        True
    
    [root@k8s_master ~]# ls /var/cache/salt/minion/extmods/grains/test_grains.py   #增加了pyc文件
    test_grains.py   test_grains.pyc  

    主控端查看grains信息

    [root@k8s_master ~]# salt 'k8s_master' grains.item max_open_files
    k8s_master:
        ----------
        max_open_files:
            1024
    
    [root@k8s_master ~]# salt 'k8s_node1' grains.item max_open_files  #没有添加的则不能显示
    k8s_node1:
        ----------
        max_open_files:
    

    引用:

    采用jinja模板

    { % if grains['os'] == 'centos' % }
    
    host:{{ grains['host'] }}
    
     { % elif grains['os'] == 'RedHat' % }
    
    host: {{ grains['fqdn'] }}
    
    { % endif % }

     注:在模板引擎里使用的时候遵循python列表和字典取值规则,如,获取某个主机某个网卡的ip地址

    {{ grains['ip4_interfaces']['ens33'][0] }}
  • 相关阅读:
    socket.io笔记
    node express+socket.io实现聊天室
    socket.io中 connect与connection的区别
    css clip-path的polygon属性绘制多边形
    vue 3.0
    angular
    项目总结61:IDEA远程调试linux下的tomcat
    Java深入学习28:Redisson分布式锁的使用
    Java深入学习27:Java反射
    Java深入学习28:Runnable和Callable
  • 原文地址:https://www.cnblogs.com/FRESHMANS/p/8288252.html
Copyright © 2011-2022 走看看