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