我对Vagrant / Chef Solo遇到问题,当我重新配置以前传递给chef.json
的属性时,即使它们不再存在,这些属性仍会显示。
在流浪汉中,它们通过如下:
machine_properties.vm.provision :chef_solo do |chef|
chef.json = machine_options
end
如果在第一次运行时将machine_options设置为以下内容,则一切正常
machine_options['colours']['red'] = '#ff0000'
machine_options['colours']['green'] = '#00ff00'
如果您随后将其更改为以下内容,则会开始看到green
项目仍然存在。 (此外,/tmp/vagrant-chef/dna.json
文件只显示红色和蓝色,就像在流浪汉文件中显示puts
一样)
machine_options['colours']['red'] = '#ff0000'
machine_options['colours']['blue'] = '#0000ff'
但是,在使用Chef的情况下,如果您Chef::Log.info(node["colours"])
,您会看到红色,蓝色和绿色现在全部存在。这弄乱了模板,这些模板现在可以迭代所有元素,并且还意味着期望节点存在/不存在的条件和条件将节点视为存在。
看起来像Chef正在将它们视为node.normal['colours']
等,而不是node.default['colours']
。在config.omnibus.chef_version = '14.10.9'
中升级Chef的(主要?)版本可修复(d?)以便下次运行(即清除了所有内容),但随后的规定最终又充满了长删除的属性:(
是否有任何方法可以迫使Chef忘记先前的运行所告知的内容,而实际上将当前的chef.json
视为完整的东西?