覆盖Chef默认属性和从属属性

时间:2014-03-05 04:31:45

标签: chef

我可以覆盖配方\角色中的默认属性,但我无法获得依赖于该属性的任何其他属性也会更新。

作为一个例子,对于phantomjs cookbook,我想安装1.9.7而不是默认的1.9.2。 (我知道这个改变现在已经致力于食谱回购)

我可以用:

覆盖版本
  

node.set ['phantomjs'] ['version'] =“1.9.7”

但是在phantomjs默认属性中有一个依赖属性,它使用字符串替换来生成下载的基本URL:

  

默认['phantomjs'] ['basename'] =   “phantomjs - #{节点[ 'phantomjs'] [ '版本']} - linux的 - #{节点[ '内核'] [ '机器']}”

有没有办法设置版本属性,以便在评估这些相关属性之前执行更改?还是一种强制重新评估的方法?

这是我以前遇到的一个问题,过去我只是覆盖了所有依赖的问题..但这不是一个很好的方法。

我正在使用最新的厨师(刚刚在流浪汉下测试11.8.2,但在其他地方使用最新厨师11.10.4测试)并使用厨师独奏和厨师服务器。

感谢。

1 个答案:

答案 0 :(得分:1)

您需要在运行列表中移动自己的食谱(覆盖此属性)。在编译时执行的字符串插值(foo-"#{whatever}")(加载属性文件时)和chef-client按运行列表的顺序加载它们。

或者您可以选择手动覆盖所有相关属性,但这是通向地狱的道路。