0
我正在尋找一些關於如何對守衛進行編程以實現差異部署的示例。假設我有exe1,exe2,sql1,sql2作爲我的整個應用程序。我創建了一個完整的食譜,包含部署整個應用程序的步驟。將其部署在我的服務器上。廚師for Windows,Gaurd僅部署變更的示例
然後我在sql2中進行了更改。我在食譜中進行了更改並上傳了它;完整的食譜上傳到服務器。現在我想讓廚師爲sql2做必要的部署步驟。廚師會自動處理嗎?我看到寫有警衛的例子,例如檢查數據庫實例是否存在,是否需要安裝等。是否必須編寫類似於檢查文件更改和僅在更改時部署的警衛?什麼是最佳實踐?
看看廚師教程中的例子,這似乎不是真的。例子中充滿了必須自己寫的檢查。如果未安裝,請僅安裝IIS,如果未創建數據庫,請創建數據庫。我假設這些例子是爲了說明人們必須編程冪等性而編寫的。 – Amit
我還應該澄清,冪等意味着多次執行相同操作不會改變狀態/結果等。在運行的服務器上重新部署數據庫不一定是冪等的;除非你碰巧在服務器中沒有數據。類似地,一些腳本不能一次又一次地運行,而不改變狀態/結果。廚師的例子清楚地表明並努力指出人們如何應對適當的警衛。 – Amit
很多教程並不旨在製作特別好的Chef代碼。用於安裝IIS的'windows_feature'資源已經在內部是冪等的,因爲它可以檢查註冊表中已安裝的功能列表,以查看它是否需要在每個聚合上運行安裝。正如我所說的,一些資源不是冪等的,所以你需要編寫你自己的守衛或確保所運行的命令本身是冪等的。 – coderanger