首先,我不是Ruby或Chef的专家。我有一个自定义资源,它接受我试图传递给另一个自定义资源的参数。它不起作用。该参数未在第二个资源上设置,因此第二个资源仅查看参数的默认值。
# cookbook/recipes/default/caller.rb
# Call first_resource and pass 2 as the index
first_resource "Pass in 2" do
index 2
end
# cookbook/resources/first_resource.rb
resource_name :first_resource
property :index, Integer, default: 1
action :execute do
# call my second custom resource and pass index to it
second_resource "Call second resource with #{index}" do
index index
end
end
# cookbook/resources/second_resource.rb
resource_name :second_resource
property :index, Integer, 1
action :execute do
raise "The index is #{index}"
end
本质上,我的食谱“caller.rb”需要将变量(索引)传递给第一个资源,而第一个资源又需要将所述变量传递给第二个资源。我遇到的问题是第二个资源总是得到默认值1,即使我正在传入2.我认为当Chef完成编译阶段时,参数的second_resource值会被设置?
我无法将配方中的值一直传递到第二个资源。
我在文档中读过load_current_value
但是当我在动作之外使用它时,我无法调用任何资源。我也尝试在动作中使用load_current_value
,但后来我得到NoMethodError
。
帮助!