過去IT人員因為管理伺服器數量有限,因此多數情況手動管理是可以被接受的方法,不過當企業IT架構進到了網路規模(Web-Scale)時代,雲端架構下的伺服器數量動輒數以千計,如仍再用人手動管理缺乏經濟效益,因此自動化的工具應需求而生。
Chef是達到自動化管理伺服器的工具,而DevOps工具Chef全球傳教士Micheal Ducy說:「Chef是一種語言」,能將IT架構轉為基礎架構即程式碼(Infrastructure as Code),且既然是程式語言就要獲得像專案程式碼一樣的處理,同樣要做版本管理、能被測試,並能被重複執行。
Chef以廚師做菜的情境對應系統營運人員管理伺服器,在Chef中最重要的就是食譜(Cookbook),一個Cookbook便是一臺欲部署伺服器的設定檔,Cookbook中包含配方(Recipe)、資源(Resource)、檔案、樣板等多個套件,而其中的Recipe是用來設定伺服器部署的細節,像是如何安裝、安裝哪些套件或是該如何配置等,而Resource則是設定運作的規則。
而除了Chef本身就是一個方便的工具外,Micheal Ducy另外介紹了4種Chef生態系的工具,幫助系統工程師使用Chef:
1.名稱:Chefspec
功能:Chefspec是一個單元測試(Unit test)與程式碼覆蓋(Code coverage)的框架 RSpec的擴充套件,對於Cookbook的迴歸測試(Regression testing)很有幫助,避免Cookbook的更新影響既存的設定,而在部署後發生錯誤。
2.名稱:Foodcritic
功能:可以標記出Cookbook中可能會發生錯誤的部分,還能客製化規則。
3.名稱:Rubocop
功能:由於Chef就是用Ruby語言開發的,因此Micheal Ducy特別介紹了這個Ruby語法自動更正工具,Rubocop除了能找出潛在錯誤的風險外,也能提供像IDE的功能,修正輸入錯誤,並幫助開發者產出較高品質的程式碼。
4.名稱:Test Kitchen
功能:在一次性的運算節點上,實際測試Chef的程式碼。