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'][] }}

saltstack grains的更多相关文章

  1. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  2. Saltstack grains组件

    grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...

  3. SaltStack Grains 和 Pillar

    Grains: (1) grains 是服务器的一系列粒子信息,也就是服务器的一系列物理,软件环境信息(2) grains 是 minion 启动时收集到的一些系统信息,比如操作系统版本.内核版本.C ...

  4. SaltStack Grains 详解

    简介 Grains 是SaltStack 的重要组件之一.主要记录minion的静态信息,比如CPU,内存,磁盘,网络信息等.Grains信息是minion启动时汇报给Master的. 刷新grain ...

  5. 学习saltstack (四)

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

  6. Saltstack数据系统Grains和Pillar(三)

    Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...

  7. Saltstack系列4:Saltstack之Grains组件

    grains说明 grains是Saltstack最重要的组件之一,grains的作用是手机被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根 ...

  8. saltstack实战3--配置管理之grains

    grains是什么 grains是minion服务启动后,采集的客户端的一些基本信息,硬件信息,软件信息,网络信息,软件版本等.你可以在minion上自定义一些grains信息. 它是静态的信息,mi ...

  9. saltstack:使用教程之二高级模块用法Grains、Pillar

    1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...

随机推荐

  1. MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)

    官网说:从5.7.18开始不在二进制包中提供my-default.cnf文件.参考:https://dev.mysql.com/doc/refman/5.7/en/binary-installatio ...

  2. ajax 的json格式

    我们平时使用ajax向后台传递数据时,通常会传递json格式的数据,当然这里还有其它格式,比如xml.html.script.text.jsonp格式. json类型的数据包含json对象和json类 ...

  3. BZOJ3133[ballmachine]——倍增+优先队列

    题目描述 有一个装球机器,构造可以看作是一棵树.有下面两种操作: 从根放入一个球,只要下方有空位,球会沿着树滚下.如果同时有多个点可以走,那么会选择编号最小的节点所在路径的方向.比如依次在树根4放2个 ...

  4. jwt实现

    <?phpnamespace app\admin\controller;use think\Config;use think\Controller;use think\Request;use t ...

  5. opencv 图片缩放

    import cv2 as cv import numpy as np # 图片缩放 img = cv.imread('../images/moon.jpg', flags=1) # flags=1读 ...

  6. Summary (7Road)

    今天有幸参加了一次考试,碰到的一些考题如下: 很多东西,明明都是会的,可是就是写不出来.可见自己的Linux基础还是很薄弱,懒得去记这些有用的东西.既然自己不是老板,不是项目经理,就该努力记住这些基础 ...

  7. 【原创】POJ 3259 Wormholes(Bellman-Ford) && 简介Bellman-Ford算法

    [原创] 题目大意 John有N个农场,一共有M条边,在农场上出现了W个虫洞(W是一条边),其中M是双向普通边,W是单向虫洞边.John穿行于农场之间每经过一条边(S到E)的时间为+T,每经过虫洞会时 ...

  8. SHOI2008仙人掌图(tarjan+dp)

    Solution 好题啊没的说. 本题需要求出仙人掌的直径,但仙人掌是一个带有简单环的一张图无法直接用树形dp求解,但它有一个好东西就是没有类似环套环的东西,所以我们在处理时就方便了一些. 思路:ta ...

  9. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  10. JAVA多线程之当一个线程在执行死循环时会影响另外一个线程吗?

    一,问题描述 假设有两个线程在并发运行,一个线程执行的代码中含有一个死循环如:while(true)....当该线程在执行while(true)中代码时,另一个线程会有机会执行吗? 二,示例代码(代码 ...