Saltstack系列5:Saltstack之pillar元件
pillar元件
pillar也是Saltstack最重要的元件之一,其作用是定義與被控主機相關的任何資料,定義好的資料可以被其他元件使用,如模板、state、API等。
在pillar中定義的資料與不同業務特性的被控主機相關聯,這樣不同被控主機只能看到自己匹配的資料,因此pillar安全性很高,適用於一些比較敏感的資料,這也是區別於grains最關鍵的一點,如定義不同業務組主機的使用者id、組id、讀寫許可權、程式包等資訊,定義的規範是採用Python字典形式,即鍵/值,最上層的鍵一般為主機的id或組的名稱。
pillar的定義
主配置檔案定義
Saltstack預設將主控端配置檔案中的所有資料都定義到pillar中,而對所有被控主機開放,可通過修改/etc/salt/master配置來定義是否開啟或關閉這項功能。
【/etc/salt/master】
pillar_opts: True/False
修改後執行命令來觀察效果:
salt '*' pillar.data
SLS檔案定義
pillar支援在sls檔案中定義資料,格式須符合YAML規範,與Saltstack的state元件十分相似,新人容易將兩者混淆,兩者檔案的配置格式、入口檔案top.sls都是一致的。
定義pillar的主目錄
【/etc/salt/master】
pillar_roots: base: - /srv/pillar
同時建立pillar目錄,執行命令:
install -d /srv/pillar
定義入口檔案top.sls
入口檔案的作用一般是定義pillar的資料覆蓋被控主機的有效範圍,'*'代表任意主機,其中包括了一個data.sls檔案具體內容如下:
【/srv/pillar/top.sls】
base: '*': - data #指代的是data.sls檔案
【/srv/pillar/data.sls】
appname: website flow: maxconn: 3000 maxmem: 6G
校驗pillar
重新整理被控主機的pillar資訊
salt '*' saltutil.refresh_pillar
檢視上面定義的data.sls資料項
salt 'wx' pillar.data appname flow
pillar的使用
完成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
結果:
wx: True
結合grains處理資料的差異性
首先通過結合grains的id資訊來區分不同的id的maxcpu的值,其次進行引用觀察匹配的資訊,將data.sls修改成如下形式:
appname: website flow: maxconn: 3000 maxmem: 6G {% if grains['id'] == 'wx' %} #jinjia2模板語法 maxcpu: 8 {% else %} maxcpu: 4 {% endif %}
結果:
wx: ---------- flow: ---------- maxconn: 3000 maxcpu: 8 maxmem: 6G
參考資料:
根據劉天斯《Python自動化運維技術與最佳實踐》整理
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31383567/viewspace-2660644/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Saltstack系列4:Saltstack之Grains元件AI元件
- Saltstack系列2:Saltstack遠端執行命令
- SaltStack
- saltstack常用語法
- saltstack——安裝篇
- saltstack的架構架構
- saltstack使用介紹
- Saltstack基本安裝部署
- saltstack獲取IP地址
- saltStack自動化工具
- saltstack 常用執行模組
- saltstack:常用狀態模組
- saltstack03的配置管理
- 02 . SaltStack高階用法(Python API)PythonAPI
- 01 . SaltStack部署配置及簡單應用
- 基於Saltstack、Artifactory打造傳統模式下持續部署平臺模式
- Salt Pillar
- SaltStack未授權訪問及命令執行漏洞分析(CVE-2020-16846/25592)
- SaltStack RCE危急漏洞(CVSS得分10)影響成千上萬的資料中心
- Netty 系列文章之基本元件概覽Netty元件
- HTML5系列之canvas用法HTMLCanvas
- 【Kubernetes系列】第5篇 Ingress controller - traefik元件介紹Controller元件
- SpringMVC 框架系列之元件概述與配置詳解SpringMVC框架元件
- 【Kubernetes系列】第7篇 CI/CD之元件部署元件
- tkinter學習系列(四)之Button 控制元件控制元件
- 原生js系列之無限迴圈輪播元件JS元件
- PyQT5之滑塊控制元件QSliderQT控制元件IDE
- 深入學習SAP UI5框架程式碼系列之四:SAP UI5控制元件的後設資料實現UI框架控制元件
- PyQT5之計數器控制元件QSpinBoxQT控制元件
- 雲原生系列5 容器化日誌之EFK
- 深入學習SAP UI5框架程式碼系列之六:SAP UI5控制元件資料繫結的實現原理UI框架控制元件
- 【5年Android從零覆盤系列之五】關於頁面佈局控制元件開發總結Android控制元件
- 通過最簡單的button控制元件,深入學習SAP UI5框架程式碼系列之零控制元件UI框架
- vue系列元件篇(二)Vue元件
- PyQT5之設定視窗控制元件風格QT控制元件
- 閒聊系列之 5-why root cause分析法
- 深入學習SAP UI5框架程式碼系列之五:SAP UI5控制元件的例項資料修改和讀取邏輯UI框架控制元件
- DelayQueue系列(二):基礎元件元件