Кулинарные книги 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' for Chef:: Рецепт "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:in каждое '==> приложение: /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

Я скучаю по чему-то ужасно глупому здесь?

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:: Рецепт "по умолчанию" '

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


/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)

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

Другие вопросы по тегам