廚師 - 多少抽像是聰明的?
我們支持超過 20 個單獨的應用程序。大多數人一年看到的變化不會超過幾次。我們認為廚師會幫助我們。
我試圖在手動配置和自動化之間找到一個快樂的媒介。我有兩個很好的問題:
- 為我們的每個應用程序設置一個帶有食譜和角色的廚師伺服器是否更聰明?還是我們應該隔離每個項目,並為每個應用程序配備一個主廚伺服器?
2)(如果我們有多個廚師伺服器)我應該如何管理多個廚師伺服器?與另一個廚師伺服器?廚師獨奏?
我看到很多文章記錄瞭如何設置 chef 或涵蓋功能,但我還沒有看到一篇非常好的文章記錄某人如何在中型生產環境中實際使用 chef。在這個方向上的一些提示可能會很好。
謝謝!
主要問題有點棘手。多少抽象的油嘴滑舌的答案是“不是太多,但也不是太少”。只是稍微嚴肅一點,這是您真正必須自己解決的問題,因為它取決於很多因素。
一個好的第一步是創建一個“basenode”配置(角色和環境屬性),讓您的所有節點都由 Chef 管理。這可能包括一堆現有的社區食譜,例如:
- 建構必備
- 頭客戶
- 使用者(雖然我更喜歡 fnichol 的chef-user cookbook)
在這個階段,您的應用程序將在基本節點之上手動配置和安裝。
現在您應該對 Chef 的工作原理有了更好的了解,這樣您就可以開始考慮更多特定領域的食譜會是什麼樣子。繼續自下而上地工作並編寫說明書來安裝您的應用程序所需的包,並使用屬性和數據包來配置它們。您提到的 20 個應用程序(例如,它們主要是 Rails 應用程序)之間可能存在一些共同點,您可以將其分解為一組通用的配方。
關於在手動配置和自動化之間找到一種媒介,您提出了一個很好的觀點。當我開始使用 Chef 時,我陷入的陷阱之一就是盡可能地嘗試自動化。這最終變成了極端情況和奇怪錯誤的噩夢,這些錯誤可以通過手動重新啟動服務或重新啟動節點來修復。維護和調試並不有趣。這些天我盡量堅持使用包、文件和模板資源。
擁有 100 個角色確實聽起來有點過頭,但我不知道有關您的情況的更多細節。我傾向於使用更通用的角色,如“Apache-Server”或“RabbitMQ-Server”,然後使用屬性、數據包和更具體角色的各種組合來個性化每個節點。