我对chef相当陌生,我正在寻找在我们的厨师托管服务器上升级java版本的正确方法。
我有3个厨师管理的游乐场环境( P1 , P2 和 P3 )通常它们保持不变。除了像DB或java升级那样进行一些升级时
对于每种环境:烹饪书的版本通常在 P1 , P2 和 P3 中相同。通常,如果我更新食谱,厨师通常会将菜谱更改应用于所有3种环境。我需要将更改仅应用于 P1 中的服务器。
如何告诉大厨只将新版本的java食谱应用于 P1 环境?
答案 0 :(得分:3)
您可以使用cookbook_versions
限制每environment次使用的食谱版本。
在 P1 中“取消固定”(不受限制)时,将以下内容添加到其他两个环境定义中:
cookbook_versions({
'java' => '< 2.0.0'
})
这会将这些环境限制为1.x.y
食谱的java
版本。如果一切正常,则通过将其从其他环境中删除来释放该版本约束。
可选择熟悉environment cookbook pattern,这对我们中的许多人来说可能有些过分,但恕我直言会提供高级工作流程外观的良好印象。
此外,相对较新的Policyfiles概念也应该为您提供解决该问题的方法。
答案 1 :(得分:0)
可以使用环境文件中的覆盖属性指定Java版本。
"override_attributes": {
"java": {
"jdk_version": "8"
}
}