salt之grains组件
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组件的更多相关文章
- Saltstack grains组件
grains是Saltstack最重要的组件之一,grains的作用是收集被控主机的基本信息,这些信息通常都是一些静态的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根据这些信息进行灵活定 ...
- Saltstack系列4:Saltstack之Grains组件
grains说明 grains是Saltstack最重要的组件之一,grains的作用是手机被控主机的基本信息,这些信息通常都是一些静态类的数据,包括CPU.内核.操作系统.虚拟化等,在服务器端可以根 ...
- salt之pillar组件
pillar也是salt最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与不同业务特征的被控主机相关联, ...
- salt的grains
grains作用: 1.匹配 minion 2.收集信息 (每次重启minion才会收集) grains 数据存储在minion端. salt '*' grains.ls salt '*' grain ...
- Saltstack管理对象属性之grains和pillar组件
Grains组件 Grains是saltstack记录minion的一些静态信息组件,可以简单的理解为grains里面记录着每台minion的一些常用的属性,比如cpu.内存.磁盘.网络信息等,可以通 ...
- 死磕salt系列-salt grains pillar 配置
grains 和 pillar 对比: Grains:存放静态数据,主要存储客户端的主机信息,重启grains会刷新. Pillar: 处理敏感数据, 处理差异性的文件. Grains数据系统 sal ...
- Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar
一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...
- lunix salt 用法
红蜘蛛软件 c/s client : 学生端是客户端 ,装了红蜘蛛客户端-学生端 server端: 教师机 ,装了红蜘蛛软件-教师端 教师机,只能管理, 教师机和学生机,相互通信,相互知道的情 ...
- SaltStack Grains 详解
简介 Grains 是SaltStack 的重要组件之一.主要记录minion的静态信息,比如CPU,内存,磁盘,网络信息等.Grains信息是minion启动时汇报给Master的. 刷新grain ...
随机推荐
- PHP 的工作流组件记录
我目前只知道在有审批流程中会用到工作流. 不过我我还没用过,还不知道怎么使用. 暂且先记录一下,目前我找到的几个 PHP 工作流组件. symfony https://github.com/symfo ...
- POJ2299逆序对模板(树状数组)
题目:http://poj.org/problem?id=2299 只能相邻两个交换,所以交换一次只会减少一个逆序对.所以交换次数就是逆序对数. ps:原来树状数组还可以记录后边lowbit位的部分和 ...
- 可视化mark
待尝试研究的可视化组件及产品: 开源组件 商业组件 开源组件 zeppelin Caravel D3.js Flare talend(ETL) pentaho spagoBI NanoCubs Dyg ...
- SQL Server-- 存储过程中错误处理
一.存储过程中使用事务的简单语法 在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式: Create P ...
- 2017头条笔试题:二维点集中找出右上角没有点的点并按x坐标从小到大打印坐标
PS:这篇是之前本来就想发的但是一直没时间写,加上今天做了京东的题,结果代码名就命名为jingdong了……懒得改代码名重新跑一遍结果了=.= 暴力法去做就是遍历每个点,判断它是不是“最大点”.判断过 ...
- js操作cookie(转载:经测试可用)
/***js操作cookie,star***/ function addCookie(objName,objValue,objsec){//添加cookie var str = objName + ...
- 杂项-TOOL:NPIO
ylbtech-杂项-TOOL:NPIO NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作.NPOI是一个开源的Ja ...
- 杂项:BugFree
ylbtech-杂项:BugFree BugFree是借鉴微软的研发流程和Bug管理理念,使用PHP+MySQL独立写出的一个Bug管理系统.简单实用.免费并且开放源代码(遵循GNU GPL). 命名 ...
- java接口定义和作用
接口语法 1.接口是一种引用类型,可以等同看作类.修饰符 interface 接口名 2.接口中只能出现常量和抽象方法 3.接口其实是一个特殊的抽象类,特殊在接口是完全抽象的 4.接口中没有构造方法, ...
- Linux期中架构 全网备份案例
server端脚本 #!/bin/bash #1 进行数据完整性验证 并生成结果 find /backup -type f -name "finger.txt"| xargs md ...