Блок Vagrant + Chef выбрасывает неинициализированные константы Opscode::Mysql

Вот вывод vagrant up (после vagrant destroy) рассматриваемого блока (vagrant provision приводит к той же ошибке):

==> mongos-zend: ================================================================================
==> mongos-zend: Recipe Compile Error in /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb
==> mongos-zend: ================================================================================
==> mongos-zend: 
==> mongos-zend: 
==> mongos-zend: NameError
==> mongos-zend: ---------
==> mongos-zend: uninitialized constant Opscode::Mysql
==> mongos-zend: 
==> mongos-zend: 
==> mongos-zend: Cookbook Trace:
==> mongos-zend: ---------------
==> mongos-zend:   /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:17:in `<class:Debian>'
==> mongos-zend:   /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:9:in `<class:MysqlService>'
==> mongos-zend:   /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:8:in `<class:Provider>'
==> mongos-zend:   /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:7:in `<class:Chef>'
==> mongos-zend:   /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:6:in `<top (required)>'
==> mongos-zend: 
==> mongos-zend: 
==> mongos-zend: Relevant File Content:
==> mongos-zend: ----------------------
==> mongos-zend: /var/chef/cache/cookbooks/mysql/libraries/provider_mysql_service_debian.rb:
==> mongos-zend: 
==> mongos-zend:  10:          use_inline_resources if defined?(use_inline_resources)
==> mongos-zend:  11:  
==> mongos-zend:  12:          def whyrun_supported?
==> mongos-zend:  13:            true
==> mongos-zend:  14:          end
==> mongos-zend:  15:  
==> mongos-zend:  16:          include MysqlCookbook::Helpers::Debian
==> mongos-zend:  17>>         include Opscode::Mysql::Helpers
==> mongos-zend:  18:  
==> mongos-zend:  19:          action :create do
==> mongos-zend:  20:  
==> mongos-zend:  21:            unless sensitive_supported?
==> mongos-zend:  22:              Chef::Log.debug("Sensitive attribute disabled, chef-client version #{Chef::VERSION} is lower than 11.14.0")
==> mongos-zend:  23:            end
==> mongos-zend:  24:  
==> mongos-zend:  25:            package 'debconf-utils' do
==> mongos-zend:  26:              action :install
==> mongos-zend: 
==> mongos-zend: 
==> mongos-zend: 
==> mongos-zend: [2015-01-12T10:50:04-06:00] ERROR: Running exception handlers
==> mongos-zend: [2015-01-12T10:50:04-06:00] ERROR: Exception handlers complete
==> mongos-zend: [2015-01-12T10:50:04-06:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
==> mongos-zend: [2015-01-12T10:50:04-06:00] ERROR: uninitialized constant Opscode::Mysql
==> mongos-zend: [2015-01-12T10:50:04-06:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
Chef never successfully completed! Any errors should be visible in the
output above. Please fix your recipes so that they properly complete.

$ шеф-клиент -v Шеф-повар: 11.18.0.rc.1

$ бродяга -v бродяга 1.6.5

Кулинарная книга проходит через супермаркет berks, который доставит меня - https://github.com/chef-cookbooks/mysql .

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

Поворот в стиле Шьямалана: мой коллега использует тот же репозиторий Vagrant/Chef, что и я, и может запускать vagrant up без проблем. У нас одинаковые версии Vagrant и Chef, а всем остальным нужно управлять через Berksfile/Vagrantfile (которые находятся в репозитории).


person lostphilosopher    schedule 12.01.2015    source источник
comment
как вы установили поваренные книги?   -  person hek2mgl    schedule 12.01.2015
comment
@hek2mgl hek2mgl Все кулинарные книги находятся в ведении Берков, поэтому, если я сделаю berks list, я получу кучу кулинарных книг, включая * mysql (6.0.6), что кажется проблемным местом.   -  person lostphilosopher    schedule 12.01.2015
comment
Вы можете подтвердить, что Opscode:Mysql:Helper отсутствует в папке с кулинарными книгами?   -  person hek2mgl    schedule 12.01.2015
comment
@ hek2mgl файл helpers.rb присутствует в поваренной книге (если вы это имеете в виду).   -  person lostphilosopher    schedule 13.01.2015


Ответы (2)


Ваш код основан на поваренной книге mysql версии < 6.0.

См. вспомогательную библиотеку в версии 5.6.1, где она находится в пространстве имен Opscode::Mysql::Helpers, по сравнению с вспомогательной библиотекой в ​​v6 .0.0, где он находится в MysqlCookbook::Helpers.

Я не уверен, какой у вас список выполнения, если у вас есть собственная кулинарная книга верхнего уровня, но вы можете определить ограничения версии в depends части metadata.rb (см. документы).

person StephenKing    schedule 12.01.2015
comment
Это кажется многообещающим - сейчас исследую. Почему у меня может быть эта проблема, а у кого-то другого, использующего тот же репо, нет этой проблемы, если это так? Спасибо за ответ, я обновлю, если он работает! - person lostphilosopher; 13.01.2015
comment
Я тоже не уверен, это выглядит очень странно. Поскольку фрагмент кода, показанный в ваших журналах, относится к версии 5.x, а не к версии 6.x. Как вы напортачили со своим магазином berkshelf (в `~/.berkshelf/cookbooks) — может быть, удалить кулинарные книги оттуда? - person StephenKing; 13.01.2015
comment
Я все еще запускаю vagrant up для подтверждения, но по вашему предложению я rm -rf mysql-6.0.6 из своего каталога ~/.berkshelf/cookbooks и rm -rf /chef-cookbooks из своего проекта. Затем я запустил vagrant destroy && vagrant up. ВЫГЛЯДИТ так, как будто это могло решить проблему. Это как если бы то, что было в моем каталоге, поскольку mysql-6.0.6 на самом деле было чем-то другим или содержало ошибки? Я не знаю... - person lostphilosopher; 13.01.2015
comment
БУМ. Это исправило это. Вывод berks list не изменился, равно как и содержимое ls chef-cookbooks/ или ls ~/.berkshelf/cookbooks/, НО после выполнения шагов удаления, описанных выше, я больше не получаю эту ошибку. Благодарю вас! - person lostphilosopher; 13.01.2015

Только что посмотрел наши включения — мы цитируем все названия поваренных книг. Я бы начал там.

Еще одна вещь может быть чувствительностью к регистру - в зависимости от того, какая файловая система хоста может вступить в игру.

person Wyatt Barnett    schedule 12.01.2015
comment
Я не думаю, что это проблема, поскольку рассматриваемый код исходит из этого репозитория opscode git. Это не я написал. Я ожидаю, что если бы это было сломано, эта проблема была бы более широко распространена. Кроме того, мой коллега, у которого нет этой проблемы, работает на таком же Mac. Спасибо хоть! - person lostphilosopher; 13.01.2015