一、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