2016-06-29 55 views
0

我正在尋找一些關於如何對守衛進行編程以實現差異部署的示例。假設我有exe1,exe2,sql1,sql2作爲我的整個應用程序。我創建了一個完整的食譜,包含部署整個應用程序的步驟。將其部署在我的服務器上。廚師for Windows,Gaurd僅部署變更的示例

然後我在sql2中進行了更改。我在食譜中進行了更改並上傳了它;完整的食譜上傳到服務器。現在我想讓廚師爲sql2做必要的部署步驟。廚師會自動處理嗎?我看到寫有警衛的例子,例如檢查數據庫實例是否存在,是否需要安裝等。是否必須編寫類似於檢查文件更改和僅在更改時部署的警衛?什麼是最佳實踐?

回答

0

大多數廚師資源(以及其他現代CM工具中的類似構造)是「冪等的」,意味着他們只需採取任何必要的操作即可達到所需的最終狀態。這意味着如果您擁有template資源並且內容已經正確,則不會更新。有些資源本身不可能是冪等的,主要是execute和朋友,所以你可以寫額外的檢查來確保你自己的能力。

+0

看看廚師教程中的例子,這似乎不是真的。例子中充滿了必須自己寫的檢查。如果未安裝,請僅安裝IIS,如果未創建數據庫,請創建數據庫。我假設這些例子是爲了說明人們必須編程冪等性而編寫的。 – Amit

+0

我還應該澄清,冪等意味着多次執行相同操作不會改變狀態/結果等。在運行的服務器上重新部署數據庫不一定是冪等的;除非你碰巧在服務器中沒有數據。類似地,一些腳本不能一次又一次地運行,而不改變狀態/結果。廚師的例子清楚地表明並努力指出人們如何應對適當的警衛。 – Amit

+0

很多教程並不旨在製作特別好的Chef代碼。用於安裝IIS的'windows_feature'資源已經在內部是冪等的,因爲它可以檢查註冊表中已安裝的功能列表,以查看它是否需要在每個聚合上運行安裝。正如我所說的,一些資源不是冪等的,所以你需要編寫你自己的守衛或確保所運行的命令本身是冪等的。 – coderanger

相關問題