2016-06-17 108 views
1

我對相當新,我正在尋找在我們的廚師管理的服務器上升級版本的正確方法。目標廚師Java食譜食譜版本到特定的環境

我有3個廚師管理操場環境(P1P2P3)一般情況下它們保持不變。做如DB一些升級或Java升級爲每個環境的

時除外:該食譜的版本是在P1P2,和P3通常是相同的。通常,如果我更新食譜,廚師通常將食譜更改應用於所有3種環境。我需要將更改僅應用於P1中的服務器。

我該如何告訴廚師將新版本的java食譜只應用於P1環境?

回答

3

您可以使用cookbook_versions限制根據environment使用的食譜版本。

雖然「取消固定」(沒有限制)P1,添加以下其他兩個環境定義:

cookbook_versions({ 
    'java' => '< 2.0.0' 
}) 

這將限制這些環境1.x.y版本的java菜譜。如果一切正常,您可以通過將其從其他環境中刪除來釋放該版本限制。

或者,熟悉environment cookbook pattern,這對我們許多人來說可能是矯枉過正,但恕我直言爲高級工作流程的外觀提供了一個良好的印象。

此外,Policyfiles的相對較新的概念也應該爲您提供解決該問題的方法。

+0

unpinned?那是什麼。新的,如我所說。感謝您的鏈接將閱讀環境模式和政策文件 –

+0

不確定是否「unpinning」是正式的正確的術語,說實話。通過定義約束(即'<2.0.0'),您_pin_(限制,約束)版本。如果你再次移除它(或者有一個沒有這種約束的環境),那麼食譜版本不會被固定/不受約束/「解除固定」。 – StephenKing

0

可以通過在環境文件中使用override屬性來指定Java版本。

"override_attributes": { 
    "java": { 
     "jdk_version": "8" 
    } 
    } 
+0

其實,關於問題的第一部分(_upgrade java versions_),我同意這可以解決問題。不過,其他人聽起來更多的是以食譜爲中心 - 如果OP使用自定義的_java_食譜,這聽起來甚至聽起來像。 – StephenKing