Grains

 grains在每次的minion启动(重启)的时候都会刷新数据,可以用在salt的模块和其他组件中。

Grains相关命令

salt '*' sys.list_functions grains   查看grains的操作方法
salt '*' grains.ls                   查看所有grains key
salt '*' grains.items                查看所有grains
salt '*' grains.item os ipv4         查看指定grains
salt '*' grains.get ipv4:0           获取第一个IP地址
salt '*' saltutil.sync_grains        刷新grains
salt '*' sys.reload_modules          重载模块
salt "*" grains.append aa bb         动态设置grains
salt "*" grains.setvals "{'a':'b','d':'f'}"

saltutil.sync_grains                    同步Grains
salt ‘*’ saltutil.sync_all

salt
-call --local grains.items minion端使用Grains

Grains三种定义方式

/etc/salt/minion     优先级最高(minion端)
grains:
  OS:
    - Xen
    - 1.1.1.1
  http: nginx


/etc/salt/grains     优先级次之(minion端)
  OS:
    - Xen
    - 1.1.1.1
  http: nginx


/srv/salt/_grains/    优先级最低(自定义的)
xxx.py

自定义Grains

#!/usr/bin/env python
import salt.modules.cmdmod
__salt__ = {
    'cmd.run': salt.modules.cmdmod._run_quiet,
    'cmd.retcode': salt.modules.cmdmod._retcode_quiet,
    'cmd.run_all': salt.modules.cmdmod._run_all_quiet,
}

def _my_custom_grain():
    my_grain = {'foo': 'bar', 'hello': 'world'}
    return my_grain

def main():
    grains = {}
    grains['my_grains'] = _my_custom_grain()
    grains['npus'] = __pillar__['apache']
    grains['file'] = __salt__['cmd.run']('ls /root')
    return grains
原文地址:https://www.cnblogs.com/hanqian/p/6790101.html