Deployment
如何在 Chef 控制的環境中組織部署過程?
我有一個基於 Linux 的 Web 基礎架構,其中包含 15 台虛擬機和 50 多種不同的服務。它完全由廚師控制。大多數服務都是內部開發的。
基本上,目前的部署過程是由一個 shell 腳本觸發的。建構系統(Python 和 shell 腳本的混合)將服務打包為
.deb
文件,並將這些包放入儲存庫中。然後它apt-get update
在所有 15 個節點上執行,因為標準的 Chefapt
食譜apt-get
每天只執行一次,我們絕對不想apt-get update
在每次chef-client
喚醒時無條件地執行。建構系統chef-client
最終會在所有 15 個節點上重新啟動守護程序(由於 pull Chef 的性質,我們需要這一步)。目前的過程有許多我們想要解決的缺點。首先,它是非同步的,因為部署腳本在重啟後不會檢查
chef-client
日誌,所以我們甚至不知道部署是否成功。它甚至不等待 Chef 客戶端完成循環。其次,我們絕對不想chef-client
在所有節點上強制重啟,因為我們通常只部署少量的包。第三,我不太確定chef-client
用於部署是否合法,可能我們從一開始就做錯了。請分享您的想法/經驗。
我認為您不需要重新啟動客戶端 - ‘chef-client –once’ 就足夠了。另外,如果我是您,我將製作一個數據包,其中標記了需要部署的包,並基於該包的數據執行 apt-get。
就成功/失敗報告而言,您想要的是一個Chef 處理程序,它將成功/失敗報告回某個聚合中心點。