我對chef相當新,我正在尋找在我們的廚師管理的服務器上升級java版本的正確方法。目標廚師Java食譜食譜版本到特定的環境
我有3個廚師管理操場環境(P1,P2和P3)一般情況下它們保持不變。做如DB一些升級或Java升級爲每個環境的
時除外:該食譜的版本是在P1,P2,和P3通常是相同的。通常,如果我更新食譜,廚師通常將食譜更改應用於所有3種環境。我需要將更改僅應用於P1中的服務器。
我該如何告訴廚師將新版本的java食譜只應用於P1環境?
我對chef相當新,我正在尋找在我們的廚師管理的服務器上升級java版本的正確方法。目標廚師Java食譜食譜版本到特定的環境
我有3個廚師管理操場環境(P1,P2和P3)一般情況下它們保持不變。做如DB一些升級或Java升級爲每個環境的
時除外:該食譜的版本是在P1,P2,和P3通常是相同的。通常,如果我更新食譜,廚師通常將食譜更改應用於所有3種環境。我需要將更改僅應用於P1中的服務器。
我該如何告訴廚師將新版本的java食譜只應用於P1環境?
您可以使用cookbook_versions
限制根據environment使用的食譜版本。
雖然「取消固定」(沒有限制)P1,添加以下其他兩個環境定義:
cookbook_versions({
'java' => '< 2.0.0'
})
這將限制這些環境1.x.y
版本的java
菜譜。如果一切正常,您可以通過將其從其他環境中刪除來釋放該版本限制。
或者,熟悉environment cookbook pattern,這對我們許多人來說可能是矯枉過正,但恕我直言爲高級工作流程的外觀提供了一個良好的印象。
此外,Policyfiles的相對較新的概念也應該爲您提供解決該問題的方法。
可以通過在環境文件中使用override屬性來指定Java版本。
"override_attributes": {
"java": {
"jdk_version": "8"
}
}
其實,關於問題的第一部分(_upgrade java versions_),我同意這可以解決問題。不過,其他人聽起來更多的是以食譜爲中心 - 如果OP使用自定義的_java_食譜,這聽起來甚至聽起來像。 – StephenKing
unpinned?那是什麼。新的,如我所說。感謝您的鏈接將閱讀環境模式和政策文件 –
不確定是否「unpinning」是正式的正確的術語,說實話。通過定義約束(即'<2.0.0'),您_pin_(限制,約束)版本。如果你再次移除它(或者有一個沒有這種約束的環境),那麼食譜版本不會被固定/不受約束/「解除固定」。 – StephenKing