Chef:将参数传递给Chef中的ruby_block

时间:2014-06-30 00:19:28

标签: ruby chef chef-recipe

如何将参数传递给chef中的ruby_block。

如果我有

  notifies :create, "ruby_block[createErb]", :immediately

我希望在我通知时将参数(fileToConvert)传递给此ruby_block(createErb)。

ruby_block "createErb" do
  block do
    ErbCreator.new(fileToConvert)
  end
  action :nothing
end

我该怎么做?

1 个答案:

答案 0 :(得分:2)

简短回答 - 你不能。

RubyBlock是一个Chef资源,因此它不接受任意参数。在您的示例中,我建议创建Chef Extension(LWRP或HWRP):

在您的资源中:

# resources/erb_create.rb
actions :create
default_action :create

attribute :filename, name_attribute: true
# more attributes

在您的提供商中:

# providers/erb_create.rb
action(:create) do
  ErbCreator.new(new_resource.filename)
  # ... etc
end

然后在食谱中:

# recipes/default.rb
cookbook_erb_create 'filename'

你可以read more about LWRPs on the Chef Docs