Vagrant + шеф-повар бросает "неинициализированную константу 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.

$ chef-client -v Chef: 11.18.0.rc.1

$ vagrant -v Vagrant 1.6.5

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

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

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

2 ответа

Решение

Ваш код опирается на кулинарную книгу MySQL в версии < 6.0,

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

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

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

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

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