saltstack Grains组件

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目录下

posted @ 2018-03-30 18:11  Mr黄瑞  阅读(716)  评论(0编辑  收藏  举报