pillar模塊:
特點:給minion指定它想要的數據,給哪個minion指定,哪個minion能看到,,其他minion看不到,安全性得到了保障,在master端設置的
pillar應用場景:
1、敏感數據
比如給某一個配置文件設置個密碼,這個密碼只希望某個minion能看到
2、使用pillar處理變量的差異性
3、做配置管理時用pillar定義一些變量參數
4、定位主機
[root@linux-node1 ~]# salt '*' pillar.items
linux-node2:
----------
linux-node1:
----------
pillar模塊默認是關閉的,需要在master配置文件打開:
[root@linux-node1 ~]# vim /etc/salt/master
pillar_opts: True
##保存退出,重啓salt-master
[root@linux-node1 ~]# salt 'linux-node1' pillar.items
linux-node1:
----------
master:
----------
__role:
master
auth_mode:
1
auto_accept:
False
cache_sreqs:
True
cachedir:
/var/cache/salt/master
.........skip......................
下面我們學習怎麼定義pillar的數據:
[root@linux-node1 ~]# vim /etc/salt/master
pillar_roots:
base:
- /srv/pillar
pillar_opts: False
##保存退出,創建目錄,重啓salt-master
mkdir /srv/pillar
/etc/init.d/salt-master restart
[root@linux-node1 ~]# vim /srv/pillar/apache.sls ##jinjia模板
{% if grains['os'] == 'CentOS' %}
apache: httpd
{% elif grains['os'] == 'Debian' %}
apache: apache2
{% endif %}
單獨運行上面語句沒有任何作用,,下面指定哪個minion能看到apache.sls,進行調用
[root@linux-node1 ~]# vim /srv/pillar/top.sls ##這是pillar的top.sls,和上面的top.sls沒有任何關係
base:
'*':
- apache
##讓所有的機器都能看到apache的pillar
[root@linux-node1 ~]# salt '*' pillar.items
linux-node2:
----------
apache:
httpd
linux-node1:
----------
apache:
httpd
使用pillar時,在修改完配置文件後,要刷新下使之生效纔可以使用,不刷新可以獲取到,但不可以用
[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping ##-I是pillar的縮寫
linux-node2:
Minion did not return. [No response]
linux-node1:
Minion did not return. [No response]
[root@linux-node1 ~]# salt '*' saltutil.refresh_pillar
linux-node2:
True
linux-node1:
True
[root@linux-node1 ~]# salt -I 'apache:httpd' test.ping
linux-node1:
True
linux-node2:
True
grains和pillar的區別:
名稱 | 存儲位置 | 數據類型 | 數據採集更新方式 | 應用 |
Grains | minion端 | 靜態數據 | minion啓動時收集,也可以使用 saltutil.sync_grains進行刷新 | 存儲minion基本數據。比如用於 匹配minion,自身數據可以用來 做資產管理等。 |
Pillar | master端 | 動態數據 | 在master端定義,指定給對應的 minion。 可以使用saltutil.sync_pillar刷新。 | 存儲master指定的數據,只有指 定的minion可以看到,用於敏感 數據保存。 |