- Chef 教程
- Chef - 首頁
- Chef - 概述
- Chef - 架構
- Chef - 版本控制系統設定
- Chef - 工作站設定
- Chef - 客戶端設定
- Chef - Test Kitchen 設定
- Chef - Knife 設定
- Chef - Solo 設定
- Chef - Cookbook
- Chef - Cookbook 依賴
- Chef - 角色
- Chef - 環境
- Chef - Chef-Client 作為守護程序
- Chef - Chef-Shell
- Chef - 測試 Cookbook
- Chef - Foodcritic
- Chef - ChefSpec
- 使用 Test Kitchen 測試 Cookbook
- Chef - 節點
- Chef - Chef-Client 執行
- 高階 Chef
- 動態配置菜譜
- Chef - 模板
- Chef - 使用 Chef DSL 的純 Ruby
- Chef - 使用菜譜的 Ruby Gems
- Chef - 庫
- Chef - 定義
- Chef - 環境變數
- Chef - 資料包
- Chef - 資料包指令碼
- Chef - 跨平臺 Cookbook
- Chef - 資源
- 輕量級資源提供程式
- Chef - 藍圖
- Chef - 檔案與包
- Chef - 社群 Cookbook
- Chef 有用資源
- Chef - 快速指南
- Chef - 有用資源
- Chef - 討論
Chef - 概述
Chef 是一款由 Opscode 開發的開源技術。Opscode 的聯合創始人 Adam Jacob 被稱為 Chef 的創始人。這項技術使用 Ruby 編碼來開發基本的構建塊,例如菜譜和 Cookbook。Chef 用於基礎設施自動化,並有助於減少基礎設施管理的手動和重複性任務。
Chef 為不同的構建塊制定了自己的約定,這些構建塊是管理和自動化基礎設施所必需的。
為什麼選擇 Chef?
Chef 是一種配置管理技術,用於自動化基礎設施配置。它基於 Ruby DSL 語言開發。它用於簡化配置和管理公司伺服器的任務。它能夠與任何雲技術整合。
在 DevOps 中,我們使用 Chef 在內部和雲端部署和管理伺服器和應用程式。
Chef 的特性
以下是 Chef 最突出的特性:
Chef 使用流行的 Ruby 語言來建立特定領域的語言。
Chef 不會對節點的當前狀態做出假設。它使用其機制來獲取機器的當前狀態。
Chef 非常適合部署和管理雲伺服器、儲存和軟體。
Chef 的優勢
Chef 提供以下優勢:
較低的入門門檻 - 由於 Chef 使用原生 Ruby 語言進行配置,這是一種標準的配置語言,因此任何具有一定開發經驗的人都可以輕鬆上手。
與雲的出色整合 - 使用 knife 實用程式,可以輕鬆地將其與任何雲技術整合。對於希望在其多雲環境中分配基礎設施的組織來說,它是最佳工具。
Chef 的劣勢
Chef 的一些主要缺點如下:
Chef 的一個巨大缺點是 Cookbook 的控制方式。它需要持續維護,以防止工作人員弄亂其他人的 Cookbook。
僅提供 Chef solo。
目前,它只適合 AWS 雲。
如果使用者不熟悉 Ruby,則不容易學習。
文件仍然不足。
Chef 的關鍵構建塊
菜譜 (Recipe)
它可以定義為用於管理基礎設施的屬性集合。菜譜中存在的這些屬性用於更改現有狀態或設定特定基礎設施節點。它們在 Chef 客戶端執行期間載入,並與節點(機器)的現有屬性進行比較。然後它達到菜譜的節點資源中定義的狀態。它是 Cookbook 的主要工作單元。
Cookbook
Cookbook 是菜譜的集合。它們是上傳到 Chef 伺服器的基本構建塊。當 Chef 執行時,它確保其中包含的菜譜將給定的基礎設施更改為菜譜中列出的所需狀態。
資源 (Resource)
它是菜譜的基本組成部分,用於使用不同型別的狀態管理基礎設施。一個菜譜中可以有多個資源,這將有助於配置和管理基礎設施。例如:
package - 管理節點上的包
service - 管理節點上的服務
user - 管理節點上的使用者
group - 管理組
template - 管理包含嵌入式 Ruby 模板的檔案
cookbook_file - 將檔案從 Cookbook 中的 files 子目錄傳輸到節點上的某個位置
file - 管理節點上檔案的內容
directory - 管理節點上的目錄
execute - 在節點上執行命令
cron - 編輯節點上現有的 cron 檔案
屬性 (Attribute)
它們基本上是設定。可以將其視為任何想要在 Cookbook 中使用的鍵值對。可以應用多種不同型別的屬性,這些屬性對節點執行的最終設定具有不同的優先順序。
檔案 (File)
它是 Cookbook 中的子目錄,其中包含任何將放置在使用 Cookbook 的節點上的靜態檔案。然後可以將菜譜宣告為將檔案從該目錄移動到最終節點的資源。
模板 (Templates)
它們類似於檔案,但它們不是靜態的。模板檔案以 .ebr 副檔名結尾,這意味著它們包含嵌入式 Ruby。它們主要用於將屬性值替換到檔案中,以建立將放置在節點上的最終檔案版本。
Metadata.rb
它用於管理有關包的元資料。這包括包的名稱和詳細資訊等資訊。它還包括依賴資訊,這些資訊告訴此 Cookbook 需要哪些 Cookbook 才能執行。這允許 Chef 伺服器正確構建節點的執行列表,並確保所有部分都被正確傳輸。
預設 Cookbook 結構
C:\chef\cookbooks\nginx>tree
Folder PATH listing for volume Local Disk
Volume serial number is BE8B-6427
C: ├───attributes
├───definitions
├───files
│ └───default
├───libraries
├───providers
├───recipes
├───resources
└───templates
└───default
Chef - 相關技術
以下是 Chef 相關技術的列表。
Puppet
Puppet 提供了一種標準的方式來交付和操作軟體,無論它在哪裡執行。它是一個用於 Linux、Unix 和 Windows 系統的自動化管理引擎,它根據集中式規範執行管理任務。
Puppet 的主要功能如下:
- 使用統一配置實現新系統。
- 更新系統並升級安全性和軟體包。
- 整合新功能並新增靈巧的功能。
- 自定義配置以確保資料來源的可用性。
- 最佳化可用資源並最大限度地降低成本。
- 簡化角色並使團隊能夠專注於核心和富有成效的問題。
- 獲得可用基礎設施的鳥瞰圖。
Ansible
Ansible 是一個極其簡單的 IT 自動化平臺,它使您的應用程式和系統更易於部署。避免編寫指令碼來部署和更新您的應用程式 - 使用接近純英語的語言進行自動化,使用 SSH,無需在遠端系統上安裝代理。
Ansible 的主要功能如下:
- 簡單易學
- 用 Python 編寫
- 無代理
- 基於 YAML 的 Playbook
- Ansible galaxy
SaltStack
SaltStack 用於資料驅動的配置。它是一種基於動態通訊匯流排構建的新型基礎設施管理方法。它用於資料驅動的編排、任何基礎設施的遠端執行以及任何應用程式堆疊的配置管理。
Fabric
Fabric 是一種基於 Python 的程式語言,它被開發為 Python 的 API,需要在 Python 程式碼中匯入才能配置和管理基礎設施。