Не удается найти LWRP в пользовательской кулинарной книге

Я создаю кулинарную книгу, которая устанавливает файлы js моего узла, а затем настраивает для них сценарии initd. К сожалению, я не могу вызвать нестандартный LWRP в поваренной книге.

Вот ошибка запуска шеф-клиента:

 26>> blah_node_as_service 'setting up pricing service' do
 27:      directory '/var/blah/blah-pricing/'
 28:      script 'pricing-http-server-cluster.js'
 29:      resource_name 'blah-pricing' 
 30:  end
 31:  

Running handlers:
[2015-06-05T14:57:40-04:00] ERROR: Running exception handlers
Running handlers complete
[2015-06-05T14:57:40-04:00] ERROR: Exception handlers complete
[2015-06-05T14:57:40-04:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
Chef Client failed. 0 resources updated in 1.961443247 seconds
[2015-06-05T14:57:40-04:00] ERROR: No resource or method named `frt_node_as_service' for `Chef::Recipe "default"'
[2015-06-05T14:57:40-04:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

Вот ключевые файлы в cookbook.

blah@blah:~/chef-repo/cookbooks/blah-deploy$ ls resources/
default.rb  blahNodeAsService.rb

blah@blah:~/chef-repo/cookbooks/blah-deploy$ cat resources/blahNodeAsService.rb 
actions :install

default_action :install if defined?(default_action)

attribute :script, :kind_of => String, :required => true
attribute :directory, :kind_of => String, :required => true
attribute :resource_name, :kind_of => String, :required => true

blah@blah:~/chef-repo/cookbooks/blah-deploy$ cat providers/blahNodeAsService.rb 
use_inline_resources

action :install do

    converge_by("Installing.") do
      resp = setUpService
      @new_resource.updated_by_last_action(resp)  
    end

end



def load_current_resource

  @current_resource = Chef::Resource::BlahNodeAsService.new(@new_resource.name)
  @current_resource.directory(@new_resource.directory)
  @current_resource.script(@new_resource.script)
  @current_resource.resource_name(@new_resource.resource_name)

end

def setUpService
end

Книга рецептов уже включена в книгу рецептов для службы, И LWRP по умолчанию (default.rb) в этой книге рецептов работает нормально. Это второй LWRP, который не может быть найден.

Спасибо


person akaphenom    schedule 05.06.2015    source источник


Ответы (1)


Оказывается, вы ссылаетесь на LWRP, используя комбинацию имени кулинарной книги и имени ресурса LWRP:

<cookbook-name>_<resource-name>

В случае выше:

blah_deploy_blah_node_as_service

Так что, похоже, я должен назвать это лучше, но, по крайней мере, это работает.

person akaphenom    schedule 05.06.2015
comment
Вы можете реализовать ресурс как HWRP и провайдера, используя LWRP. Это позволяет обойти автоматический префикс имени поваренной книги и по-прежнему пользоваться преимуществами поставщиков LWRP. Примеры из замечательной книги Customizing Chef: github. com/jonlives/customizing_chef/blob/master/part3_examples/ + github.com/jonlives/customizing_chef/blob/master/part3_examples/ - person Roland; 05.06.2015
comment
Спасибо за подтверждение, это помогло мне перейти к следующей проблеме, почему это не работает! - person jaseeey; 05.11.2015