#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 .