Chef
如何在單節點上測試修改後的廚師食譜?
我有一個廚師伺服器管理少數節點。伺服器有帶有各種秘密的食譜和數據包。我想對其中一個配方進行更改並僅在單個節點上對其進行測試:我不希望其他節點更新和使用修改後的配方。
我探索過的解決方案:
測試廚房等
測試很好,但是如果沒有數據包和廚師伺服器獨有的其他東西,我無法測試一些細節。
rsync 程式碼到 /var/chef/cache/cookbooks
並執行
chef-client --skip-cookbook-sync
這失敗了,因為我的食譜原始碼缺少 a
metadata.json
和其他各種東西。提升食譜版本,上傳,編輯節點的執行列表
這很難協調多個開發人員之間的並發工作(特別是如果測試持續數天或數週)。還有幾個我無法控制的環境,我不能真的假設它們都被鎖定到我希望修改的特定版本的食譜。
重命名說明書,上傳到伺服器,將備用角色應用於節點
這是我現在使用的解決方案。這很乏味,因為更改說明書名稱會更改它定義的任何資源的名稱,所以我必須對說明書進行相當多的編輯。維護備用角色集以使用重命名的說明書也很煩人。
我已經通過將食譜版本設置為 0.0.1 之類的東西並將目標環境鎖定到該版本來處理這個問題——這避免了導致每個擁有解鎖環境的人都採用新的食譜。
如果您需要它成為真正的特定節點,您可以創建一個“取決於”特定 0.0.1 說明書的虛擬說明書,並將該配方作為附加執行列表條目分配給節點。只要環境的引腳允許使用較舊的說明書(即 <= xyz 而不是 = xyz),它就會強制該節點使用特殊說明書。
此外,查看 test-kitchen + chef-zero 以測試廚房內的伺服器功能。