<h2>1. Grains</h2>Grains可以認為是描述minion本身固有屬性的靜態數據。例如,minion服務器的操作系統版本、內存的大小、網卡的MAC地址等
列出主機所有的Grains數據命令:
# salt "minion-one" grains.items
查詢系統版本:
# salt 'minion-one' grains.item os
我們可以用Grains定位主機:利用-G或--grain對系統為CentOS的機器定位
# salt -G 'os:CentOS' test.ping
定位系統版本為7.X的機器
# salt -G 'osrelease:7.*' test.ping
凡是之前用grains.items列出的所有數據都可以用來匹配主機。并且,Grains還支持自定義,可以滿足各種不同的需求。自定義方法很多,以下是一個簡單的自定義例子
# salt 'minion-one' grains.setval cpu_num 8
查看自定義后的grains數據
# salt 'minion-one' grains.item cpu_num
這種方法設置的Grains已經被寫入到minion機器的配置文件里了,即使重啟salt-minion服務,Grain數據也將存在,可以用grains.delval
命令進行刪除,或者在minion機器上找到數據定義刪除配置文件并重啟minion。
自定義Grains數據存儲在minion的位置如下:
# cat /etc/salt/grains
<h2>2. Pillars</h2>Pillars數據與Grains相似,不同點在于Pillars可以定義為更加動態的形式,并且它是存儲在master端的,常用于設置敏感數據。
列出主機所有的Pillars數據命令:
# salt "minion-one" pillar.items
上述命令的執行結果有可能為空,因為master端默認關閉了Pillars,使用vi etc/salt/master
把pillar_opts: False注釋刪除并改為True,再執行上述命令就可以看到主機的Pillars數據了,Pillars還是默認關閉為好,這里只是查看一下,查看完記得關閉。
Pillars同樣支持自定義數據,使用Pillars匹配機器可以用-I命令。
<h2>3. Grains與Pillars相同點和不同點</h2><h5>相同點:</h5>都是以key value形式存儲的數據庫,都為python字典
<h5>不同點:</h5>
ps: Grains的刷新命令僅用于人為自定義的數據刷新有效,要重新收集機器本身Grains數據必須重啟minion。