1、数据系统grains, 如果老板让你收集线上300台服务器的相关硬件信息,你是选选择用一台台登录,还是用salt,又或者使用python的api。
grains是saltstack的组件之一,用来收集minion客户端的底层信息(操作系统版本、ip地址、内存、cpu、磁盘、内核等系统属性),在minion上收集的信息,可以作为master匹配目标。
如果需要自定义grains,需要添加到minion的/etc/salt/grains(配置文件定义默认路径)。
minion的grains信息是在minion启动时采集汇报给master。grains是以key value 形式存放的数据库。
查看grains的命令用法: salt ‘*’ sys.doc grains
列出所有grains里的状态模块: salt '*' grains.ls
打印所有状态信息: salt ‘*’ grains.items (同上面状态模块的扩展信息)
列出每台的ip地址: salt '*' grains.item fqdn_ip4(可自定义显示的内容)
列出每台的操作系统: salt '*' grains.item os
#查看granins的命令用法:
[root@beijin base]# salt '*' sys.doc grains
grains.append:
New in version 0.17.0
#列出所有grains的状态模块:
[root@beijin base]# salt '*' grains.ls
beijin-01:
- SSDs
- biosversion
- cpu_model
- disks
- dns
- domain
- fqdn_ip4
- fqdns
- gid
- groupname
- host
#列出所有状态信息内容:
[root@beijin base]# salt '*' grains.items
beijin-01:
----------
SSDs:
biosreleasedate:
04/01/2014
biosversion:
disks:
- vda
dns:
----------
domain:
ip4_nameservers:
- 100.100.2.136
- 100.100.2.138
domain:
fqdn:
beijin_2
fqdn_ip4:
- 172.27.170.41
#列出每台的ip地址:
[root@beijin base]# salt '*' grains.item fqdn_ip4
beijin-01:
----------
fqdn_ip4:
- 172.27.170.41
#列出每台的操作系统:
[root@beijin base]# salt '*' grains.item os
beijin-01:
----------
os:
CentOS
也支持同时检索多个数据: salt ‘*’ grains.item fqdn_ip4 host os
[root@beijin base]# salt '*' grains.item fqdn_ip4 host os
beijin-01:
----------
fqdn_ip4:
- 172.27.170.41
host:
beijin_2
os:
CentOS
windows 下的使用: salt '*' grains.item os
[root@vm10-100-3-63 salt]# salt '*' grains.item os
3d-1-10.100.0.246:
----------
os:
Windows
3d-1-10.100.0.247:
----------
os:
Windows
3d-1-10.100.0.225:
----------
os:
Windows
3d-1-10.100.0.191:
----------
os:
Windows
[root@vm10-100-3-63 salt]# salt '*' grains.item fqdn_ip4
3d-1-10.100.0.225:
----------
fqdn_ip4:
3d-1-10.100.0.218:
----------
fqdn_ip4:
3d-1-10.100.0.191:
----------
fqdn_ip4:
3d-1-10.100.0.229:
----------
fqdn_ip4:
3d-1-10.100.0.247:
----------
fqdn_ip4:
3d-1-10.100.0.246:
----------
2、用于匹配,比如公司有100台Centos,200台windwos, 那么如何匹配出来了.
两种方式: 匹配就是用键值来过滤出value。
salt '*' grains.item os id fndn.ip4
salt -G 'os:CentOS' test.ping 筛选Centos机器
salt -G 'osrelease:7*' test.ping 筛选Centos 7机器(也可以这些写salt -G 'osrelease:7*' cmd.run 'ifconfig eth0|grep "inet "')
方法一:#匹配出相同系统的机器(先匹配打印到一个文件,然后用sed再处理)
[root@beijin base]# salt '*' grains.item os id fqdn.ip4
beijin-01:
----------
fqdn.ip4:
id:
beijin-01
os:
CentOS
方法二:#匹配出Centos类型的机器:
[root@beijin base]# salt -G 'os:CentOS' test.ping
beijin-01:
True
[root@beijin base]# salt -G 'osrelease:7*' cmd.run 'ifconfig|grep "inet "'
beijin-01:
inet 172.27.170.41 netmask 255.255.240.0 broadcast 172.27.175.255
------------------------------------------------------
筛选windwos的机器:
[root@63 salt]# salt -G 'os:Windows' test.ping
1-10.100.0.239:
True
1-10.100.0.188:
True
1-10.100.0.225:
True
1-10.100.0.191:
True
[root@vm10-100-3-63 salt]# salt -G 'osrelease:10*' test.ping
3d-1-10.100.0.188:
True
3d-1-10.100.0.229:
True
3d-1-10.100.0.246:
True
3d-1-10.100.0.191:
True
[root@vm10-100-3-63 salt]# salt -G 'master:10.100.3.63' test.ping
3d-1-10.100.0.191:
True
3d-1-10.100.0.229:
True
3d-1-10.100.0.193:
True
3d-1-10.100.0.215:
True
(1)、自定义
来源:oschina
链接:https://my.oschina.net/yuanhaohao/blog/4929548