附加到 Chef 数组属性
Append to Chef array attribute
我正在尝试像这样初始化一个空的 Chef 属性:
node.default['tool_list'] = Array.new
并且我想在食谱运行时向该数组添加元素,并最终使用该完整数组作为食谱中最后一个食谱的输入。
因此,随着每个配方的运行,我尝试像这样附加到属性:
node['tool_list'] << "tool:Python_2.7"
我为不同的工具做了几次,然后最终在我的最终配方中引用了一个资源:
resource "example" do
labels node['tool_list']
end
除了这似乎不起作用并且最终属性似乎为空。我究竟做错了什么?像这样附加到属性的正确方法是什么?
这真的很不推荐。数组没有任何分层合并的语义,所以东西很快就会变得很奇怪。更好的方法是使用散列,然后使用 node['tool_list'].keys
或类似的东西。此外,您可能会陷入 compile/converge 差异,需要包装东西以进行惰性评估 (lazy { node['tool_list'].keys }
)。
我正在尝试像这样初始化一个空的 Chef 属性:
node.default['tool_list'] = Array.new
并且我想在食谱运行时向该数组添加元素,并最终使用该完整数组作为食谱中最后一个食谱的输入。
因此,随着每个配方的运行,我尝试像这样附加到属性:
node['tool_list'] << "tool:Python_2.7"
我为不同的工具做了几次,然后最终在我的最终配方中引用了一个资源:
resource "example" do
labels node['tool_list']
end
除了这似乎不起作用并且最终属性似乎为空。我究竟做错了什么?像这样附加到属性的正确方法是什么?
这真的很不推荐。数组没有任何分层合并的语义,所以东西很快就会变得很奇怪。更好的方法是使用散列,然后使用 node['tool_list'].keys
或类似的东西。此外,您可能会陷入 compile/converge 差异,需要包装东西以进行惰性评估 (lazy { node['tool_list'].keys }
)。