一、Grains
grains是salt用来收集minion端底层系统信息的接口。比如,操作系统type、域名 、IP地址、内存及其他相关系统属性信息等。存储在minion端,用于保存minion端数据信息。minion启动时才加载grains信息,所以他时静态的,Grains用于minion端信息查询。
通过grains.ls查看grains所支持查询的信息名称:
#salt '*' grains.ls
通过grais.items查看所有grains数据
#salt '*' grains.iterms
查询指定grains名称的信息。如查看操作系统类型
方法1.
[root@master salt]# salt '*' grains.item os kubernetes-master: ---------- os: CentOS minion: ---------- os: CentOS kubernetes-minion: ---------- os: CentOS
方法2. get方法
[root@master salt]# salt '*' grains.get os kubernetes-minion: CentOS minion: CentOS
grains在minion端配置
#vim /etc/salt/minion #指定minion的角色 grains: roles: - nginx
如果觉得该上面的配置文件也可以直接在/etc/salt/目录下创建一个名为grains的文件。
echo 'roles: nginx'>/etc/salt/grains
(效果与修改/etc/salt/minion的效果相同),角色名 必须是唯一的。修改完成后重启minion端生效
在master端查看:
[root@kubernetes-master salt]# salt '*' grains.get roles kubernetes-minion: nginx
数据采集方式:
minion启动时手偶记,也可以使用saltutil.sync_grains进行刷新
通过grains来匹配minion
#salt -G roles:nginx cmd.run w
二、Pillar
Pillar是salt用来给minion指定它想要的数据。存储在master端,存放需要提供给minion的信息(动态)。Pillar的配置在master端,其默认是关闭的。
编辑/etc/salt/master配置文件打开pillar_roots的配置
#vim /etc/salt/master pillar_roots: base: - /srv/pillar
应用场景:
- 敏感信息:每个minion只能访问master分配给自己的pillar信息
- 变量:差异化信息
- 其他任何数据
- 可以在target及state中使用
数据采集方式:
在master端定义,指定给对应的Minion,使用saltutil.refresh_pillar刷新
例:
#cd /srv/pillar # cat apache.sls {% if grains['os'] == 'CentOS' %} apache: https {% elif grains['os'] == 'Debian' %} apache: apache2 {% endif %} # cat top.sls base: '*': - apache
要使用pillar信息,必须刷新pillar
#salt '*' saltutil.refresh_pillar kubernetes-minion: True kubernetes-master: True
获取定义好的pillar信息。
# salt '*' pillar.items