salt之pillar組件


    pillar也是salt最重要的組件之一,其作用是定義與被控主機相關的任何數據,定義好的數據可以被其他組件使用,如模板、state、API等。在pillar中定義的數據與不同業務特征的被控主機相關聯,這樣不同被控主機只能看到自己匹配的數據,因此pillar安全性很高,適用於一些比較敏感的數據,這也是區別於grains最關鍵的一點,如定義不同業務組主機的用戶id、組id、讀寫權限、程序包等信息,定義的規范是采用Python字典形式,即鍵/值,最上層的鍵一般為主機的id或組名稱。

pillar的定義:

1、主配置文件定義

salt默認將主控端配置文件中的所有數據都定義到pillar中,而且對所有被控主機開放,可通過修改/etc/salt/master配置中的pillar_opts: True或False來定義是否開戶或禁用這項功能,修改后執行salt '*' pillar.data來觀察效果。

2、SLS文件定義

pillar支持在slsy文件中定義數據,格式須符合YAML規范,與salt和state組件十分相似,兩者文件的配置格式、入口文件top.sls都是一致的。

(1)定義pillar的主目錄

修改主配置文件/etc/salt/master的pillar_roots參數,定義pillar的主目錄

同時創建pillar目錄,執行命令: install -d /srv/pillar

(2)定義入口文件top.sls

入口文件的作用一般是定義pillar的數據覆蓋被控主機的有效域范圍,"*" 代表任意主機,其中包括了一個data.sls文件,

/srv/pillar/top.sls

base:

  '*':

    - data

/srv/pillar/data.sls

appname: website

flow:

  maxconn: 30000

  maxmem: 6G

(3)校驗pillar

通過 salt 'myhost' pillar.data appname flow 命令可以看到多出了上面定義的 data.sls數據項。如果結果不符合預期,可以嘗試刷新被控機pillar數據,

運行 salt 'myhost' saltutil.refresh_pillar 即可刷新

 

3、pillar的使用

 完成pillar配置后,接下來我們可以在state、模板文件中引用,模板格式為 "{{ pillar變量 }}" ,例如:

{{ pillar['appname'] }} (一級字典)

{{ pillar['flow']['maxconn'] }} (二級字典) 或 {{ salt['pillar.get']('flow: maxconn'),{} }}

 

Python API格式如下:

pillar['flow']['maxconn']

pillar.get('flow:appname',{})

 

 結合grains處理數據的差異性----示例:

 3.1 創建pillar目錄和top.sls文件

1
2
3
4
5
  # mkdir /srv/pillar
  # vi /srv/pillar/top.sls
  base:
    '*' :
  - ip

 3.2 先通過pillar獲取minion主機IP

1
2
  # vi /srv/pillar/ip.sls
  ip: {{ grains[ 'ipv4' ][1] }}

 #寫完后,執行sls命令,可以看到已經獲取到IP

1
2
3
4
5
6
7
8
9
  # salt '*' pillar.item ip
  host2:
      ----------
      ip:
          192.168.18.213
  host1:
      ----------
      ip:
          192.168.18.212

 

 

 

 

既然grains與pillar類似,就說下區別:

1.grains是minion每次加載時獲取本地系統信息數據,是靜態的,固定的,而pillar是動態加載數據,隨時變化的,比grains更靈活。

2.grains數據存儲在minion本地,pillar存儲在master

 

 

jinja2官網語法介紹: http://jinja.pocoo.org/docs/dev/templates/

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM