[英]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.