Требуется пользовательский LWRP

Я застрял, пытаясь создать свой первый lwrp

Я создал очень простой ресурс + провайдер по адресу:

resources/rack_site.rb
providers/rack_site.rb

Я пытался протестировать ресурс 'rack_site' в рецепте из той же поваренной книги, но он терпит неудачу с ошибкой о том, что ресурс не найден. Я попытался переместить оба файла в кулинарную книгу, которую я добавил в качестве зависимости, но все равно не получается.

Что нужно сделать, чтобы использовать пользовательский ресурс в рецепте?


person SystematicFrank    schedule 08.03.2014    source источник


Ответы (2)


Это меня тоже достало. Вы можете получить доступ к LWRP, добавив имя кулинарной книги из вашего metadata.rb и символ подчеркивания перед именем ресурса. Например, если ресурс сайта стойки находится в кулинарной книге Foo: foo_rack_site.

person garnertb    schedule 08.03.2014

Chef использует имя поваренной книги (как определено в metadata.rb) для префикса LWRP. Например, если ваша кулинарная книга была названа acme-nginx, а у вас есть ресурс с именем rack_site.rb, связанный LWRP в DSL рецепта будет acme_nginx_rack_site. Например:

acme_nginx_rack_site 'foo' do
  # ...
end

Chef автоматически преобразует символы, недопустимые для методов Ruby, в символы подчеркивания (включая тире).

person sethvargo    schedule 08.03.2014
comment
В случаях, когда вы не хотите, чтобы ваш LWRP начинался с имени поваренной книги (как это принято для наиболее «тяжелых» ресурсов), вы можете использовать метод provides, чтобы указать более короткое имя. Добавление provides :rack_site в начало файлов ресурсов и файлов провайдера помогло бы в приведенном выше случае. - person Kenneth Baltrinic; 28.04.2015