saltstack Grains组件
GRAINS组件说明
GRAINS组件是saltstack中非常重要的一个组件,其主要用于记录Minion的一些静态信息。如比:CPU、内存、磁盘、网络等
grains信息是每次客户端启动后自动上报给master的,一旦这些静态信息发生改变需要重启minion或者重新同步grains
(Master执行: salt ‘*‘ state.highstate)
除此之外我们还可以自定义Grains的一些信息。自定义的方法有三种:
1、通过Minion配置文件定义
2、通过Grains相关模块定义
3、通过python脚本定义
#查看所有的itmes项
salt '*' grains.items
salt '*' grains.item ipv4
salt '*' grains.item os osrelease osfinger
自定义Grains
通过Minion配置文件配置
在Minion端我们可以通过查看/etc/salt/minion配置文件中,查找grains可以查看到相关注释的示例
便于配置管理,我们不一般不会选择在该文件上进行修改,而在minion include的目录下/etc/salt/minion.d目录下单独创建grains.conf文件
cat /etc/salt/minion.d/grains.conf
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15
# minion端
systemctl restart salt-minion
# master端
salt '*' state.highstate
salt '*' grains.item roles
使用自定义python脚本获取grains信息
默认自定义脚本需要存放在master的/srv/salt/_grains目录下,这里使用mkdir -p创建即可
获取系统时间的脚本内容如下
cat /srv/salt/_grains/get_time.py
#!/usr/bin/python
#coding: utf-8
from datetime import datetime
def get_server_time():
grains = {}
grains['server_time'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return grains
# 使用sync_grains命令同步脚本到minion主机上去
salt '*' saltutil.sync_grains
salt '*' grains.item server_time
执行同步命令后,自定义脚本会上传到minion的/var/cache/salt/minion/extmods/grains目录下