什麼是 Puppet?元件和編寫清單
想象一下,一個系統管理員管理著許多伺服器。他們可以輕鬆地解決任何可能出現的伺服器問題。但是當多臺伺服器不可用時,情況就會變得嚴重。
Puppet 在這裡可以派上用場。
使用 Puppet,可以輕鬆地部署有問題的伺服器。程式碼執行後,所有伺服器都會立即重置為其原始的所需設定。
本文將涵蓋以下關於 Puppet 的主題:
描述 Puppet。
Puppet 的元件
Puppet 的工作原理
企業使用 Puppet 編寫 Puppet 清單
描述 Puppet
配置管理工具 Puppet 確保所有系統都設定為期望的和可預測的狀態。
Puppet 可以自動在系統上安裝應用程式;因此,您也可以將其用作部署工具。Puppet 提供基礎設施即程式碼,可以測試環境並進行精確部署。
在討論了什麼是 Puppet 之後,讓我們瞭解一下 Puppet 的元件。
Puppet 的元件
Puppet 環境由核心伺服器環境(如上所示)和客戶端環境組成。主伺服器環境上有一個 Puppet master 儲存,其中儲存所有配置檔案。
用於配置客戶端的實際程式碼是清單。
程式碼和資料在模板中組合以生成最終文件。
檔案是客戶可以下載的靜態材料。
清單、模板和檔案構成模組。
由於證書頒發機構,主伺服器可以簽署客戶端傳送的證書。
必須配置的計算機是 Puppet 客戶端,它由 Agent 和 Fact 組成。
在查看了 Puppet 的各個部分之後,讓我們研究一下 Puppet 的工作原理,以便更好地理解什麼是 Puppet。
Puppet 的架構
Puppet 的架構基於主從節點。
客戶端分散在網路中,並與包含 Puppet 模組的主從環境互動。將帶有客戶端代理 ID 的證書傳送到伺服器,伺服器對其進行簽名並將其傳送回客戶端。這種身份驗證使客戶端和主伺服器之間的連線變得安全且可驗證。
然後,Fact 收集客戶端的狀態並將其傳送到主伺服器。主伺服器根據提供的 Fact 將清單組合到目錄中,並且代理在計算機上執行清單。目錄被傳遞給客戶端。客戶端建立一份詳細說明所做任何更改的報告並將其傳送到主伺服器。
使用 Puppet 的企業
瞭解使用 Puppet 管理其基礎設施的企業,將增加您學習更多相關知識的興趣。其中一些包括:
Spotify
Google
AT&T
史泰博
AON
美國空軍
這些公司出於各種原因採用了 Puppet。例如,史泰博使用 Puppet 作為配置管理解決方案來自動化其 IT 運營和其私有云的管理,以確保一致性,從而使 IT 員工有更多時間進行創新。
在 Puppet 中編寫清單
清單是為節點配置而編寫的檔案,並被組裝成在客戶端上執行的目錄。每個清單都有 .pp 副檔名,並且是用 Ruby 程式語言編寫的。
編寫清單有五個基本步驟。
系統管理員建立清單檔案。
編譯 - 透過組合清單建立目錄。
部署 - 客戶端接收目錄。
執行 - 代理在客戶端上執行目錄。
最後,客戶端被設定為所需的狀態。
每個清單都必須遵循相同的語法
Firstpuppet { ‘title’ : Attribute_name1 => attribute_value Attribute_name2 => attribute_value }
在這種情況下,第一個 Puppet 可以是服務、包或兩者。
第一個 Puppet 的名稱稱為其“標題”。需要更改或設定其值的特性稱為 Attribute name1(例如:IP、ensure)。
attribute value - 這是屬性的新值(例如:present、start)
一個清單中可以有多種資源型別。“default”一詞會影響使用該清單的所有客戶端。
例如 -
default node '/etc/sample' file: This is an example manifest, says the content. } service called "httpd" guarantee => installed } }
我們第一個 Puppet 的路徑為 /etc/sample。
檔案將使用請求的內容更新。如果檔案尚不存在,則首先建立它。下一個資源是 Apache 服務,它將在客戶端節點上設定。清單被部署到客戶端計算機。將安裝 Apache 伺服器,並且客戶端現在在“etc.”子目錄中有一個名為“sample”的檔案。
Puppet 版本的生命週期
Puppet 開源提供了兩種釋出路徑
更新計劃 - 與 PE 版本無關的 Puppet 版本平均每月接收一次次要(或“y”)更新。此跟蹤上的版本通常不會獲得補丁(或“z”)版本,儘管它們確實包含修復和新功能。此跟蹤的更新會覆蓋任何早期的次要版本。
長期釋出 - 與 Puppet Enterprise LTS(長期支援)版本相關的 Puppet 版本大約每季度釋出一次補丁(或“z”)版本。每個版本都不包含新功能,而是包含來自先前開發版本的安全和錯誤修復。
Puppet 的用例
藉助 Puppet Forge 的內建模組和程式碼示例,可以自動化以下用例:
系統的基本設定。包括服務、防火牆、NTP 和登錄檔
控制 Web 伺服器。包括 IIS、nginx、tomcat、Apache 等
原始碼監控包括 Gitlab 監控和 GitHub。其中包括 Splunk、Nagios、Zabbix、Sensu、Prometheus、New Relic、Icinga 和 SNMP
補丁管理。企業 Linux、Debian、SLES、Ubuntu 和 Windows
作業系統補丁的包管理。
Linux - 本機包管理器直接與 Puppet 整合
Windows - 與 Chocolatey 整合容器和雲原生,或使用 Puppet 在 Windows 上本地安裝應用程式。包括 Terraform、OpenShift、Docker 和 Kubernetes
容器和雲原生。與 Docker、Kubernetes、Terraform 和 OpenShift 一起
結論
在本文中,我們研究了廣泛的 Puppet。我們還觀察了 Puppet 的基本元素和每個與 Puppet 相關的應用程式案例。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP