【问题标题】:Chef : Pass parameters to a ruby_block in ChefChef : 将参数传递给 Chef 中的 ruby​​_block
【发布时间】:2014-07-01 01:50:35
【问题描述】:

如何将参数传递给 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

我该怎么做?

【问题讨论】:

    标签: ruby chef-infra chef-recipe


    【解决方案1】:

    简短的回答 - 你不能。

    RubyBlock 是 Chef 资源,因此它不接受任意参数。在您的示例中,我建议创建一个 Chef 扩展(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

    【讨论】:

      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      • 2018-03-01
      相关资源
      最近更新 更多