pillar也是Saltstack最重要的組件之一,其作用是定義與被控主機相關(guān)的任何數(shù)據(jù),定義好的數(shù)據(jù)可以被其他組件使用,如模板、state、API等。
公司主營業(yè)務:做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)建站是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)建站推出華龍免費做網(wǎng)站回饋大家。
在pillar中定義的數(shù)據(jù)與不同業(yè)務特性的被控主機相關(guān)聯(lián),這樣不同被控主機只能看到自己匹配的數(shù)據(jù),因此pillar安全性很高,適用于一些比較敏感的數(shù)據(jù),這也是區(qū)別于grains最關(guān)鍵的一點,如定義不同業(yè)務組主機的用戶id、組id、讀寫權(quán)限、程序包等信息,定義的規(guī)范是采用Python字典形式,即鍵/值,最上層的鍵一般為主機的id或組的名稱。
Saltstack默認將主控端配置文件中的所有數(shù)據(jù)都定義到pillar中,而對所有被控主機開放,可通過修改/etc/salt/master配置來定義是否開啟或關(guān)閉這項功能。
【/etc/salt/master】
pillar_opts: True/False
修改后執(zhí)行命令來觀察效果:
salt '*' pillar.data
pillar支持在sls文件中定義數(shù)據(jù),格式須符合YAML規(guī)范,與Saltstack的state組件十分相似,新人容易將兩者混淆,兩者文件的配置格式、入口文件top.sls都是一致的。
定義pillar的主目錄
【/etc/salt/master】
pillar_roots: base: - /srv/pillar
同時創(chuàng)建pillar目錄,執(zhí)行命令:
install -d /srv/pillar
定義入口文件top.sls
入口文件的作用一般是定義pillar的數(shù)據(jù)覆蓋被控主機的有效范圍,'*'代表任意主機,其中包括了一個data.sls文件具體內(nèi)容如下:
【/srv/pillar/top.sls】
base: '*': - data #指代的是data.sls文件
【/srv/pillar/data.sls】
appname: website flow: maxconn: 3000 maxmem: 6G
刷新被控主機的pillar信息
salt '*' saltutil.refresh_pillar
查看上面定義的data.sls數(shù)據(jù)項
salt 'wx' pillar.data appname flow
完成pillar配置后接下來介紹使用方法。我們可以在state、模板文件中引用,模板格式為:{{ pillar變量 }}
例:
{{ pillar['appname'] }}(一級字典) {{ pillar['flow']['maxconn'] }}(二級字典) 或 {{ salt['pillar.get']('flow:maxconn',{}) }} #Python API格式如下: pillar['flow']['maxconn'] pillar.get('flow:appname',{})
salt -I 'appname:website' test.ping
結(jié)果:
wx: True
首先通過結(jié)合grains的id信息來區(qū)分不同的id的maxcpu的值,其次進行引用觀察匹配的信息,將data.sls修改成如下形式:
wx: ---------- flow: ---------- maxconn: 3000 maxcpu: 8 maxmem: 6G
參考資料:
根據(jù)劉天斯《Python自動化運維技術(shù)與最佳實踐》整理