2016-06-17 73 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