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. net core 2.0 + Autofac的坑

    控制器不能从容器中解析出来; 只是控制器构造函数参数.这意味着控制器生命周期,属性注入和其他事情不由Autofac管理 - 它们由ASP.NET Core管理.可以通过指定AddControllers ...

  2. java代码自动下载Spring Boot用户手册

    本示例演示Spring Boot 1.5.9.RELEASE版本的用户手册下载 pom.xml <?xml version="1.0" encoding="UTF- ...

  3. BZOJ4205卡牌配对——最大流+建图优化

    题目描述 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不 ...

  4. ContOS7切换国内源

    ContOS更换国内下载源 一,什么是yum源? yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由y ...

  5. 【XSY1476】平凡之路 斜率优化DP

    题目大意 有\(n\)个格子,一开始你在\(1\)号格子.每次你只能往编号更大的格子走.从第\(i\)个格子走到第\(j\)个格子的代价是\(a_i+a_j\times(j-i)\times m\) ...

  6. ios-deploy was not found

    Ionic 打包ios的时候,突然报错,提示如下: (node:1157) UnhandledPromiseRejectionWarning: ios-deploy was not found. Pl ...

  7. jquery-Ajax请求用例码

    $.ajax({                    type:"post",                    url: 'domain’,                 ...

  8. LOJ #2048. 「HNOI2016」最小公倍数

    题意 有 \(n\) 个点,\(m\) 条边,每条边连接 \(u \Leftrightarrow v\) 且权值为 \((a, b)\) . 共有 \(q\) 次询问,每次询问给出 \(u, v, q ...

  9. Python的快排应有的样子

    快排算法 ​ 简单来说就是定一个位置然后,然后把比它小的数放左边,比他大的数放右边,这显然是一个递归的定义,根据这个思路很容易可以写出快排的代码 ​ 快排是我学ACM路上第一个让我记住的代码,印象很深 ...

  10. 【LOJ#6073】距离(主席树)

    [LOJ#6073]距离(主席树) 题面 LOJ 题解 两点间的距离是\(dep[x]+dep[y]-2dep[LCA]\). 那么题目要求的东西拆开维护,唯一不好做的就是\(2dep[LCA]\). ...