繁体   English   中英

Chef-覆盖节点属性

[英]Chef - override node attribute


我们有使用节点属性的配方:

python_pip 'request_proxy' do
  virtualenv '/opt/proxy/.env'
  version node.default['request-proxy']['version']
  Chef::Log.info('Auth request proxy #{version}')
  action :install
end

在节点级别设置属性,一切正常,但是出于测试目的,我想在本地(厨房/无用)节点中覆盖它。 第一步,我向.kitchen.yml添加属性:

suites:
  - name: default
    run_list:
    - recipe[proxy_install]
    attributes: {request-proxy: {'version': '1.0.8'}}

不幸的是,节点仍然使用“默认”版本。 一切正常,没有任何错误,并且完全忽略了我的属性。
后来我尝试将其添加到生产节点上的参数文件( chef-client -j params.json ),结果是相同的。

我错过了什么? 我究竟做错了什么?

PS Chef::Log.info('Auth request proxy #{version}')也被完全忽略了?

您可以尝试使用YAML吗? kitchen.yml不是JSON文件,因此我不确定嵌入其中的JSON是否可以工作。

attributes:
  request-proxy: 
    version: '1.0.8'

另外,除非您只想选择默认值(绝不要覆盖),否则您可能不应该使用node.default 如果要在Chef中使用属性优先级(默认,常规,覆盖,强制),则应执行以下操作:

node['request-proxy']['version']

最后,您还具有带变量的单引号字符串。 这将永远不会像您在Ruby中期望的那样工作(您正在运行rubocop吗? 尝试用双引号将其删除,然后将其从资源中间删除:

Chef::Log.info("Auth request proxy #{version}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM