如何在 Chef 收敛时定义变量?

How to define a variable at converge time in Chef?

这可能看起来像是关于在收敛时修改 Chef 的行为的另一个问题,但我在任何文档或其他问题中都没有找到解决这种情况的方法。

我的一本食谱在食谱中有这个定义:

食谱:一个,食谱:一个

node['cookbookA']['resource'].each do |name, options|                                 
  template "/etc/.../#{name}.conf" do                                 
    ...
  end
end

此食谱包含在另一本食谱的不同食谱中,其中定义了 node['cookbookA']['resource'] 的值:

食谱:B,食谱:b

include_recipe 'A::a'

node.default['cookbookA']['resource'] = ['foo']

执行时,node['cookbookA']['resource']为空。

我试过的

问题

这种情况如何解决,所以配方A::a在收敛时具有B::b内部定义的值,而没有定义attributes内部属性的值,因为它是配方-依赖?

在为使用该属性的配方调用 include_recipe 之前,需要通过任何方法设置新的属性值。