1、Grains
grains是salt用來收集minion端底層系統信息的接口。好比,操做系統type、域名 、IP地址、內存及其餘相關係統屬性信息等。存儲在minion端,用於保存minion端數據信息。minion啓動時才加載grains信息,因此他時靜態的,Grains用於minion端信息查詢。
經過grains.ls查看grains所支持查詢的信息名稱:
經過grais.items查看全部grains數據
查詢指定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
2、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信息。