【问题标题】:Append to Chef array attribute附加到 Chef 数组属性
【发布时间】:2016-07-31 18:23:19
【问题描述】:

我正在尝试像这样初始化一个空的 Chef 属性:

node.default['tool_list'] = Array.new

我想在菜谱运行时向这个数组添加元素,并最终使用该完整数组作为菜谱中最后一个菜谱的输入。

因此,当每个配方运行时,我都试图像这样附加到属性:

node['tool_list'] << "tool:Python_2.7"

我为不同的工具做了几次,然后最终在我的最终配方中引用了一个资源:

resource "example" do
    labels          node['tool_list']
end

除了这似乎不起作用并且最终属性似乎是空白的。我究竟做错了什么?像这样附加到属性的正确方法是什么?

【问题讨论】:

    标签: ruby attributes chef-infra


    【解决方案1】:

    这是非常不推荐的。数组没有任何分层合并的语义,所以东西很快就会变得很奇怪。更好的方法是使用哈希,然后使用 node['tool_list'].keys 或类似的东西。此外,您可能会陷入编译/收敛差异,需要包装一些东西以进行惰性评估 (lazy { node['tool_list'].keys })。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-27
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多