1

我有一个简单的属性文件:attributes/default.rb.

default['simpleattr'] = 'file value'

在里面kitchen.yml,我愿意

suites:
  - name: default
    run_list: 
      - recipe[simple::default]
    attributes:
     simpleattr: 'value from kitchen'
     simple:
       simpleattr: 'value from kitchen'

在食谱中,我这样做:

log  "default['simpleattr']: "+node.default['simpleattr']

而且我总是得到'file value'而不是'value from kitchen'作为输出。

我想覆盖测试中的值。

4

1 回答 1

4

不要通过 访问节点值node.default[],而是使用node[]。Chef 的属性层次结构会根据其优先级自动计算值。

我已经复制了您的问题并将其上传到 Github 上。该解决方案也如我之前在评论中描述的那样。不要使用

node.default['simpleattr']

但反而

node['simpleattr']

然后一切都如您所愿,输出为

Recipe: simple::default
  * log[default['simpleattr']: value from kitchen] action write
于 2016-08-09T06:44:16.407 回答