【发布时间】:2014-03-28 18:14:28
【问题描述】:
我可以覆盖我的食谱\角色中的默认属性,但我无法让依赖于该属性的任何其他属性也更新。
例如,对于 phantomjs 食谱,我想安装 1.9.7 而不是默认的 1.9.2。 (我知道此更改现在已提交到食谱存储库)
我可以使用以下命令覆盖版本:
node.set['phantomjs']['version'] = "1.9.7"
但是在 phantomjs 的默认属性中,有一个依赖属性使用它和字符串替换来生成下载的基本 url:
默认['phantomjs']['basename'] = "phantomjs-#{node['phantomjs']['version']}-linux-#{node['kernel']['machine']}"
有没有办法设置版本属性,以便在评估这些依赖属性之前执行更改?还是一种强制重新评估的方法?
这是我之前遇到的一个问题,过去我只是覆盖所有依赖的东西..但这不是一个很好的方法。
我正在使用最新的厨师(刚刚在 vagrant 下使用 11.8.2 进行了测试,但在其他地方使用了最新的厨师 11.10.4)并且同时使用了 chef-solo 和厨师服务器。
谢谢。
【问题讨论】:
-
将其设置在属性文件中,而不是配方中
-
谢谢sethvargo .. 我还尝试覆盖我的食谱的属性文件中的值.. 我尝试了默认和覆盖,我还尝试了 include_attributes 我试图覆盖的食谱的属性。仍然没有影响依赖属性。
-
人力资源部。这似乎是一个错误,但在 Chef 11 中肯定已修复...
-
@BlueSkies 我对 phantomjs 食谱有完全相同的问题。我目前的解决方法是在我的
default["phantomjs"]["version"] = "1.9.7"定义下方重新声明计算属性,但这显然不是解决方案...
标签: chef-infra