Поваренные книги Opsworks жалуются на отсутствующий метод

Я пытаюсь развернуть свое приложение rails с рецептами opsworks, полученными от AWS. Я попытался настроить все это, сославшись на блог здесь . Что бы он ни сказал, это «php» или «php-app», я заменил его на «rails» и имя моего приложения. Моя роль JSON в приложении выглядит так -
{ "name": "hercules", "description": "OpsWorks recipe run-list for the rails app layer", "app_type": "rails", "default_attributes": { "max_pool_size": 5 }, "run_list": [ "recipe[opsworks_initial_setup]", "recipe[dependencies]", "recipe[unicorn::rails]", "recipe[rails::configure]", "recipe[deploy::default]", "recipe[deploy::rails]" ], "chef_type": "role", "json_class": "Chef::Role" }

Когда я пытаюсь развернуть, он хорошо выполняет другие рецепты и застревает на этой ошибке для deploy::rails -

==> app: ================================================================================ ==> app: Recipe Compile Error in /tmp/vagrant-chef-3/chef-solo-1/cookbooks/deploy/recipes/rails.rb ==> app: ================================================================================ ==> app: ==> app: ==> app: NoMethodError ==> app: ------------- ==> app: No resource or method named opsworks_deploy' forChef :: Recipe "rails" '==> app: ==> app: ==> app: Cookbook Trace: ==> app: --------------- ==> app : /tmp/vagrant-chef-3/chef-solo-1/cookbooks/deploy/recipes/rails.rb:20:in block in from_file' ==> app: /tmp/vagrant-chef-3/chef-solo-1/cookbooks/deploy/recipes/rails.rb:2:ineach '==> приложение: / tmp / vagrant-chef-3 / chef-solo-1 /cookbooks/deploy/recipes/rails.rb:2:in `from_file '==> приложение:

Если я открою rails.rb:20, эта функция будет там - opsworks_deploy do Chef::Log.info("****** hi there *") Chef::Log.info("#{application}") Chef::Log.info(deploy.inspect) app application deploy_data deploy end

Я упустил что-то ужасно глупое?


person Shrinath    schedule 01.10.2014    source источник
comment
Как выглядит эта линия? Также стоит отметить, что большинство кулинарных книг Opsworks не будут работать за пределами Opsworks, поскольку они ожидают, что данные будут заполнены AWS.   -  person coderanger    schedule 01.10.2014
comment
@coderanger, какую строчку спросите вы? В этом файле rails.rb есть определение строки и функции. Обновлен OP, чтобы отразить это.   -  person Shrinath    schedule 01.10.2014


Ответы (1)


В ПОРЯДКЕ. Проведя за этим 2 дня в каком-то дальнем углу результатов поиска Google, я нашел это - https://tickets.opscode.com/browse/CHEF-5011

Вставка соответствующей информации ниже -

Изменение DSL рецепта приводит к тому, что любая ошибка NoMethodError или NameError, возникающая внутри блока do..end ресурса, будет неправильно сообщаться как что-то вроде
Нет ресурса или метода с именем file' forChef :: Recipe "default" 'Например, ошибка в следующий код рецепта явно является битом no_method_here внутри файлового ресурса:
file "/tmp/whatever" do no_method_here end

Однако об ошибке сообщается как:

================================================================================

Ошибка компиляции рецепта в /private/tmp/error_message_repro/repro/recipes/default.rb

================================================================================

NoMethodError


Нет ресурса или метода с именем file' forChef :: Recipe "default" '

След поваренной книги:


/private/tmp/error_message_repro/repro/recipes/default.rb:1:infrom_file ''

Соответствующее содержимое файла:


/private/tmp/error_message_repro/repro/recipes/default.rb:

1>> file "/tmp/whatever" do 2: no_method_here 3: end 4:

А кто-то вставляет пластырь и лайнер -

sudo wget https://github.com/opscode/chef/raw/29e732d97ec7e28b2111aca9f93edfd1bc257c2d/lib/chef/dsl/recipe.rb -O /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.10.0/lib/chef/dsl/recipe.rb --no-check-certificate

(предполагается, что ваш клиент-повар находится в / opt / chef)

Надеюсь, это поможет кому-то пережить такую ​​же боль.

person Shrinath    schedule 01.10.2014