grains是saltstack最重要的组件之一,作用是收集被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU、内核、操作系统、虚拟化等,在服务器端可以根据这些信息进行灵活定制,管理员可以利用这些信息对不同业务进行个性化配置。----其实类似于Ansible的Facts

grains常用操作命令:

salt '*' grains.ls   #获取主机的grains项信息(列出grains相关模块信息)

salt '*' grains.items   #获取主机的所有grains信息

salt '*' grains.item os  #获取主机单项grains数据

定义grains数据

方法有两种,其中一种为在被控主机定制配置文件,另一种是通过主控端扩展模块API实现,区别是模块更灵活,可以通过Python编程动态定义,而配置文件只适合相对固定的键与值。

1、被控端主机定制grains数据

ssh登录一台被控机,配置文件定制的路径为/etc/salt/minion,参数为default_include:minion.d/*.conf,具体操作如下:

vim /etc/salt/minion.d/hostinfo.conf

grains:

roles:

- webserver

- memcache

deployment: datacenter3

cabinet: 13

重启被控主机salt-minion服务,使之生效。验证结果在主控端主机运行:salt 'myhost' grains.item roles deployment cabinet 查看结果应该如上。

2、主控端扩展模块定制grains数据

首先在主控端编写Python代码,然后将Python文件同步到被控主机即可生效。在主控端base目录/srv/salt下生成_grains目录,执行 install -d /srv/salt/_grains 开始编写代码,实现获取被控主机允许最大打开文件数的grains数据。

#vim /srv/salt/_grains/grains_openfile.py

import os,sys,commands
def grains_openfile():
grains = {}
_open_file=65533
try:
getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')
except Exception,e:
pass
if getulimit[0]==0:
_open_file=int(getulimit[1])
grains['max_open_file'] = _open_file
return grains
  • grains_openfile()定义一个获取最大打开文件数的函数,函数名称没有要求,符合Python函数命名规则即可。
  • grains={} 初始化一个grains字典,变量名一定要用grains,以便saltstack识别
  • grains['max_open_file']=_open_file 将获取的Linux ulimit -n的结果值赋予grains['max_open_file'],其中"max_open_file"就是grains的项,_open_file就是grains的值。

在主控端同步模块:salt 'myhost' saltutil.sync_grains 或 salt 'myhost' saltutil.sync_all,此时文件已经同步到被控端主机以下目录中,如下:

/var/cache/salt/minion/extmods/grains/grains_openfile.py和grains_openfile.pyc

/var/cache/salt/minion/files/base/_grains/grains_openfile.py

/var/cache/salt/minion/extmods/grains/    为扩展模块文件最终存放位置,刷新模块后将在同路径下生成字节码pyc ;

/var/cache/salt/minion/files/base/_grains/ 为临时存放位置

在主控端进行校验,执行salt 'myhost' grains.item max_open_file

------------------------------------------------------------------

1、执行命令时,查找minion目标(targeting)常用有三种方式:

salt ‘bash’ command         #根据bash形式匹配主机(如host1、host2)

例:# salt 'host*' test.ping

salt –E ‘RE’ command          #--pcre,使用正则表达式匹配主机

例:# salt -E '(web|mysql)' test.ping

salt –N group command           #--nodegroup,使用分组匹配,前提已经做好分组

例:# salt -N web test.ping

salt –L ‘host1,host2’ command     #--list,根据主机名

例:# salt -L 'host1,host2' test.ping

salt -G 'os:CentOS' command        #--grains,根据grains获取的信息来查

参考文档:http://lizhenliang.blog.51cto.com/7876557/1638581

salt之grains组件的更多相关文章

  1. Saltstack grains组件

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

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

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

  3. salt之pillar组件

    pillar也是salt最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与不同业务特征的被控主机相关联, ...

  4. salt的grains

    grains作用: 1.匹配 minion 2.收集信息 (每次重启minion才会收集) grains 数据存储在minion端. salt '*' grains.ls salt '*' grain ...

  5. Saltstack管理对象属性之grains和pillar组件

    Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...

  6. 死磕salt系列-salt grains pillar 配置

    grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...

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

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

  8. lunix salt 用法

    红蜘蛛软件 c/s client  : 学生端是客户端 ,装了红蜘蛛客户端-学生端 server端: 教师机  ,装了红蜘蛛软件-教师端  教师机,只能管理,  教师机和学生机,相互通信,相互知道的情 ...

  9. SaltStack Grains 详解

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

随机推荐

  1. Python——包

    包 —— 把解决一类问题的模块放在同一个文件夹里 包的导入 import 和 from ... import 都行 导入之前:凡是带点的,点的左边都必须是包 导入之后:点的左边可以是包.模块.函数.类 ...

  2. git 不能拉取时,检查是不是被杀毒软件给干掉了

    我这儿是 \Git\bin\sh.exe 被干掉了. 添加排除,并从隔离区中还原.

  3. Mybatis常见面试题 一

    1.#{}和${}的区别是什么? 注:这道题是面试官面试我同事的. 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静 ...

  4. Delphi调用网页美化SQL

    百度搜索在线美化SQL语句的网站,为了加快解析速度,这里已下载到本地. 然后delphi用webbrowse载入本地的网页,然后把sql传进去,美化后取出来. 效果如下图 点击下载源码

  5. Linux故障-bash-4.1$

    #模拟故障:-bash-4.1$ [root@nodchen ~]# su - cisco[cisco@nodchen ~]$ \rm -f .*rm: cannot remove `.': Is a ...

  6. 安卓手机安装虚拟定位的方法Xposed安装器+模拟位置(Xposed模块)

    原文:https://www.52pojie.cn/thread-571328-1-1.html 未测试,据说只支持某些手机,小米和华为很难安装,建议买其他品牌. Xposed安装器步骤:·ROOT你 ...

  7. win7连接centos的nfs

    nfs的服务端这边设置忽略. 主要关于权限的问题: Windows7 NFS客户端,使用mount命令挂载NFS服务之后,文件系统对Win7只读,无法写入文件,无法新建文件夹解决方法. 在win的cm ...

  8. 编译遇到make mrmroper问题

    ]: Entering directory `/home/share/project/ql-ol-sdk/ql-ol-kernel' ]: Entering directory `/home/shar ...

  9. 由一条普通的link引用引发的无数问号,大家能回答的帮忙回答回答吧.

    <link type="text/css" rel="stylesheet" href="1.css" /> 对于前台工作者来说 ...

  10. ORACLE V$lock视图TYPE,ID1,ID2取值的含义

    在oracle v$lock视图中,下面对type,ID1,ID2三个列的具体含义说明下: TYPE   有TM,TX两种类型,TX为行级锁,事物锁,TM锁为表级锁 TYPE ID1 ID2 TM 被 ...