Grain Pillar概念
本质上都是key value 型的数据库。 Grains 是存储在minon上的数据,minion启动后就进行Grain计算,是一种静态数据。 Pillar 数据存储在master, 是动态数据,每个minion只能看到自已的pillar。 一个minion可以告诉master它的数据,而minion则需要从master索要pillar数据。
列出所有minion上的Grains项 salt 'SN18' grains.ls
查询 minion上某一具体Grain的值 salt "SN18" grains.item ipv4
列出对应minion上所有Grain 的详细信息 salt 'SN18' grains.items +++++++++++++++++++++++++++++++ 设置 Grains 数据 命令行方式 1)单个值设置 ]# salt 'SN28' grains.setval my_grain bar SN28: ---------- my_grain: bar 查询 ]# salt 'SN28' grains.item my_grain SN28: ---------- my_grain: bar 2)多个值设置 ]# salt 'SN28' grains.setvals "{'key1':'val1','key2':'val2'}" SN28: ---------- key1: val1 key2: val2 查询命令 ]# salt 'SN28' grains.item key1 SN28: ---------- key1: val1 3)列表结构设置 ]# salt 'SN28' grains.setval my_list '['one','two','three']' SN28: ---------- my_list: - one - two - three 查询命令 ]# salt 'SN28' grains.item my_list SN28: ---------- my_list: - one - two - three
查看对应的minion的/etc/salt/grains 可以发现已经写入的Grains数据 ]# salt 'SN28' cmd.run "cat /etc/salt/grains" SN28: key1: val1 key2: val2 my_grain: bar my_list: - one - two - three
grains_module的方式设置 在master上建立模块对应的目录
]# mkdir -pv /srv/salt/_grains mkdir: created directory ‘/srv/salt/_grains’ ]# vim /srv/salt/_grains/my_grain_mod.py import time def now(): grains={} grains['now']=time.time() return grains -----------------------同步有没有生效-- 同步模块到minion ]# salt 'SN28' saltutil.sync_all
重载一次模块 ]# salt 'SN28' sys.reload_moduls
查看新设置的Grians ]# salt 'SN28' grains.item now
在minion端设置
登陆到一台minion vim /etc/salt/minion.d/grains.conf grains: roles: - webserver - memcach deployment: datacenter4 cabinet: 13 cab_u: 14-15 重启salt-minion加载新的配置文件,在satl-master上查看 ]# salt 'SN27' grains.item roles SN27: ---------- roles: - webserver - memcach
删除自定义Grains 通过 grains.setval 设置的Grain 可以直接通过下面命令删除
]# salt 'SN28' grains.delval my_grain SN28: None ++++++++++++++++++++++++++++++++++++
列出minon上所有Pillar的详细信息 [root@localhost ~]# salt 'SN28' pillar.items