У меня есть LWRP, который должен создать cookbook_file
внутри его create
действияКак использовать Chef DSL в действии LWRP в
resource_name :vuy
property :vu_name, String, name_property :true
actions :create
action :create do
log "vuy:@new_resource.vu_name-#{@new_resource.vu_name}"
cookbook_file "c:/temp/test.xml" do
source "#{@new_resource.vu_name}"
end
end
И тест рецепт
vuy 'text.txt'
chef-client
исполнение с ошибкой NoMethodError: undefined method 'vu_name' for nil:NilClass
Когда Я удаляю cookbook_file
из create
метод, журнал правильно показывает: На следующем этапе, я заменил
source "#{@new_resource.vu_name}"
с таким же значением, как указано в тесте рецепт
source "text.txt"
и файл был за уши. Для меня это выглядит так: cookbook_file
Внутренний рубиновый блок не получает копию new_resource
и становится nil
.
Как использовать свойства LWRP в качестве аргументов ресурсов, объявленных внутри действия?
В соответствии с вашим синтаксисом вы используете специальный ресурс шеф-повара 12.5+, просто удалите часть '@ new_resource' в соответствии с [документом здесь] (https://docs.chef.io/custom_resources.html) – Tensibai
Это он. Я пропустил его, хотя я прочитал этот документ :-) –