【问题标题】:kitchen.yml attributes not override default values - Chef 12.12 - Kitchen 1.10kitchen.yml 属性不覆盖默认值 - Chef 12.12 - Kitchen 1.10
【发布时间】:2016-08-09 15:37:49
【问题描述】:

我有一个简单的属性文件: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' 作为输出。

我想覆盖测试中的值。

【问题讨论】:

  • 要访问您在 test-kitchen 中定义的值,您需要访问 node['simple']['simpleattr']。不要通过node.default 访问属性,但node['simpleattr'] instead. In the YAML, the lines below attributes 行缺少一个空格缩进。您可以通过kitchen diagnose 验证 YAML 是否正确解析。
  • 我希望我找到了问题的根源(见我的回答)
  • 你很高兴地忽略了我在评论中写的所有内容..

标签: chef-infra test-kitchen chefdk chef-zero


【解决方案1】:

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

我已经复制了您的问题并上传了here on Githubsolution 也是我之前在评论中描述的。不要使用

node.default['simpleattr']

而是

node['simpleattr']

然后一切如你所愿,输出为

Recipe: simple::default
  * log[default['simpleattr']: value from kitchen] action write

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 2019-07-26
    • 1970-01-01
    • 2015-05-23
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-29
    相关资源
    最近更新 更多