【发布时间】:2016-09-12 06:31:09
【问题描述】:
我正在尝试使用 lusis/chef-logstash 的 chef-logstash 食谱,并且很难覆盖 ['logstash']['instance']['server']['config_templates'] 属性。当我通过我的包装食谱wrapper-logstash 进行设置时,我得到了默认值的合并哈希以及我通过包装食谱添加的内容。
作为参考,我在食谱中使用的代码是:
#force override our attributes (or attempt to anyways)
#attributes = node['logstash']['instance'][name]
node.force_override['logstash']['instance']['server']['config_templates'] = {}
node.force_override['logstash']['instance']['server']['config_templates'] = {
'input_redis' => 'config/input_redis.conf.erb',
'filter_sidewinder' => 'config/filter_sidewinder.conf.erb',
'output_elasticsearch' => 'config/output_elasticsearch.conf.erb'
}
我怎样才能干净地覆盖此属性,使其仅设置为我的包装食谱中的内容?
【问题讨论】:
-
谢谢,赛斯。那是我在尝试研究此问题时遇到的博客之一。 :) 该帖子讨论了哈希如何在添加和删除方面优于数组,但我在帖子中没有看到有关如何进行删除的示例,也没有看到任何表明上面的代码不正确的内容。我怀疑我对某些事情很执着,但对于我的生活,我无法弄清楚是什么。 :(
-
你不能......这就是诺亚所说的。您需要将它们设置为
nil -
我还建议您询问 John Vincent。这是他的食谱,这个问题似乎比 Stackoverflow 更适合作者回答的 GitHub 问题。
-
我会按照你的建议跟进约翰。澄清一下,哈希只能在 Chef 中合并。即使使用 force_override,也永远无法删除键?这似乎很尴尬。
标签: chef-infra logstash chef-solo