Chef: передача параметров в ruby_block в Chef

#ruby #chef-infra #chef-recipe

#ruby #chef-infra #шеф-рецепт

Вопрос:

Как передать параметры в ruby_block в chef.

Если у меня есть

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

и я хочу передать параметр (fileToConvert) этому ruby_block (createErb) в то время, когда я уведомляю.

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

Как бы я это сделал?

Ответ №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'
  

Вы можете прочитать больше о LWRP в документах Chef .