【SaltStack】数据系统Grains详解

TangLu 运维 2015-08-28 4115 0

Grains是SaltStack当中的一个数据系统,当Minion启动时Grains会把Minion的数据收集起来,比如操作系统版本、CPU 位数等。由于采用的是静态收集,只有当Minion发生重启时数据才会发生变化,在Grains的实际运用中常用于对多台Minion做操作时进行一些条件匹配,比如有上百台Minion服务器,只需要对操作系统为CentOS的做一些操作等,下面是一些用法:

salt '*' grains.items   #罗列出所有Minion的所有信息


命令执行后可以看到出现了很多信息,我们可以用这些信息来作为一些过滤条件 

st1.png

 

通过Grains信息来做过滤,使用-G选项:

salt -G 'os:CentOS' cmd.run 'uptime' #在所有CentOS系统上执行uptime 
salt -G 'cpuarch:x86_64' cmd.run 'uptime' #在所有64位CPU服务器闪执行


 


执行后反馈效果如图:

st2.png

 

如果grains.items里的模块不满足我们当前情况,还可以自定义Grains,比如添加一个Nginx模块,方法如下:

vim /etc/salt/minion  #编辑minion配置文件,在末尾加入以下内容: 
grains: web: nginx  #冒号后面必须有空格 

service salt-minion restart  #重启minion



现在执行salt '*' grains.items可以看到定义的信息已经可以被看到。这个时候在Master端执行salt -G 'web:nginx' test.ping会发现刚才编辑过Minion配置文件的服务器也能被匹配出来,而其他没有做相应操作的服务器则不会显示,生产环境中我们可以对装有Nginx的服务器批量进行重启等

salt -G 'web:nginx' cmd.run 'service nginx restart'


如果不想把上一步的信息编辑在/etc/salt/minion文件中,还可以创建/etc/salt/grains文件,然后对其编辑,方法如下:

vim /etc/salt/grains 
cloud: openstack


因为grains是静态收集信息,这个时候不重启minion的话Grains是不会生效的,所以这个时候使用-G是看不到信息的,可以在Master执行一个模块刷新


Grains salt '*' saltutil.sync_grains



现在已经可以看到添加的信息了

st4.png 

评论