saltstack数据系统Grains
1.什么是Grains系统
Grains是SaltStack收集的有关底层管理系统的静态信息。 SaltStack收集的Grains信息包括操作系统版本、域名、IP地址、内核、操作系统类型、内存以及许多其他系统属性。
您可以将自定义的grains添加到Salt Minion的/etc/salt/grains文件中,或放置在Grains部分下的Salt Minion配置文件中。 例如,许多用户为每个Salt Minion添加一个称为角色的定制grain来描述系统的功能。
2.利用grains获取信息
2.1 查看Grains拥有那些函数
[root@localhost]# salt "agent1" sys.list_functions grains
agent1:
- grains.append
- grains.delkey
- grains.delval
- grains.equals
- grains.fetch
- grains.filter_by
- grains.get
- grains.get_or_set_hash
- grains.has_value
- grains.item
- grains.items
- grains.ls
- grains.remove
- grains.set
- grains.setval
- grains.setvals
...
每个命令的帮助信息又可以通过sys.doc查看,如下:
[root@localhost]# salt 'agent1' sys.doc grains
2.2 获取主机item信息
[root@localhost salt]# salt '*' grains.ls
agent1:
- SSDs
- biosreleasedate
- biosversion
- cpu_flags
- cpu_model
- cpuarch
- disks
- dns
- domain
- fqdn
- fqdn_ip4
- fqdn_ip6
- fqdns
- gid
......
查看item的详细信息
[root@localhost salt]# salt '*' grains.items
agent1:
----------
SSDs:
biosreleasedate:
04/13/2018
biosversion:
6.00
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
- msr
......
# 此处显示还有很多
cpu_model:
Intel(R) Core(TM) i5-8500 CPU @ 3.00GHz
cpuarch:
x86_64
disks:
- sda
- sr0
- dm-0
- dm-1
......
查看某项或多项item值
[root@localhost salt]# salt '*' grains.item ipv4
agent1:
----------
ipv4:
- 127.0.0.1
- 192.168.1.4
[root@localhost salt]# salt '*' grains.item localhost ipv4
agent1:
----------
ipv4:
- 127.0.0.1
- 192.168.1.4
localhost:
wang
2.3 通过Grains模块定义Grains
方式一:命令行操作
[root@localhost salt]# salt 'agent1' grains.append hosttype 'redis-slave'
agent1:
----------
hosttype:
- redis-slave
[root@localhost salt]# salt '*' grains.item hosttype
agent1:
----------
hosttype:
- redis-slave
[root@localhost salt]# salt 'agent1' grains.setvals "{'city':'beijing'}"
agent1:
----------
city:
beijing
[root@localhost salt]# salt '*' grains.item city
agent1:
----------
city:
beijing
这样配置后,会在minion主机端生成配置文件grains ,如下:
[root@wang ~]# cat /etc/salt/grains
city: beijing
hosttype:
- redis-slave
方式二:
1.在配置文件中操作(minion端)
- /etc/salt/minion.d/grains.conf
- /etc/salt/minion
- /etc/salt/grains
在三个文件中配置都会生效,这里在/etc/salt/minion中配置
# Custom static grains for this minion can be specified here and used in SLS
# files just like all other grains. This example sets 4 custom grains, with
# the 'roles' grain having two values that can be matched against.
#grains:
# roles:
# - webserver
# - memcache
# deployment: datacenter4
# cabinet: 13
# cab_u: 14-15
grains:
roles: apache
在master节点查看item
[root@localhost salt]# salt 'agent1' grains.item roles
agent1:
----------
roles:
apache
注:如果/etc/salt/minion.d/grains.conf中已经存在的自定义items,
再通过执行grains.append或grains.setval去执行时,发现会以
grains.conf中的为准,虽然在/etc/salt/grains中也有内容生成。
而且执行grains.append操作后,/etc/salt/minion.d/grains.conf
中已存在的值会覆盖/etc/salt/grains中的重复值。
/etc/salt/minion.d/grains.conf (或/etc/salt/minion) > /etc/salt/grains配置中的优先级。
配置文件中操作,重启客户端才会生效。修改/etc/salt/grains不重启服务的方法,刷新命令如下
salt '*' saltutil.sync_grains
参考链接:http://www.361way.com/saltstack-grains/5104.html
2.grains_module的方式设置(master端)
首先在master上建立模块对应的目录:
# mkdir -pv /srv/salt/_grains
然后写入一个简单模块
#vi /srv/salt/_grains/my_grain_mod.py
import time
def now():
grains = {}
grains['now'] = time.time()
return grains
然后同步模块到minion:
[root@localhost ~]# salt 'agent1' saltutil.sync_all
agent1:
----------
beacons:
clouds:
engines:
grains:
- grains.my_grain_mod
log_handlers:
matchers:
modules:
output:
proxymodules:
renderers:
returners:
sdb:
serializers:
states:
thorium:
utils:
重新加载一次模块:
[root@localhost ~]# salt 'agent1' sys.reload_modules
agent1:
True
查看新设置得Grains:
[root@localhost ~]# salt 'agent1' grains.item now
agent1:
----------
now:
1568104340.697266