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