нет такого файла для загрузки chef/provider/lwrp_base при попытке запустить кулинарную книгу mysql через Vagrant с использованием Chef-Solo Provisioner

Хорошо, поэтому я использую кучу новых для меня технологий, поэтому я не уверен, как разделить проблему. У меня есть небольшой опыт работы с vagrant, и сейчас я пытаюсь изучить Chef.

Я клонировал эту кулинарную книгу: https://github.com/opscode-cookbooks/mysql в мой каталог ./cookbooks/mysql. Я пытаюсь запустить эту кулинарную книгу через Vagrant с помощью этого Vagrantfile:

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

# Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
Vagrant::Config.run do |config|

    config.vm.box = "precise64"
    config.vm.box_url = "http://files.vagrantup.com/precise64.box"


    config.vm.define "mysql" do |mysql|

        mysql.vm.network :hostonly, "192.168.33.12"

        mysql.vm.provision :chef_solo do |chef|
            chef.cookbooks_path = "cookbooks"
            chef.add_recipe "mysql"

            chef.json = {
                :server => {
                    version: '5.6',
                    port: '3307',
                    data_dar: '/data-mysql',
                    allow_remote_root: true,
                    remove_anonymous_Users: true,
                    remove_test_database: true
                }
            }
        end
    end
end

Когда я запускаю 'vagrant up mysql', я получаю следующий вывод:

Running chef-solo...
stdin: is not a tty
[2014-05-07T17:20:23+00:00] INFO: *** Chef 10.14.2 ***
[2014-05-07T17:20:23+00:00] INFO: Run List is []
[2014-05-07T17:20:23+00:00] INFO: Run List expands to []
[2014-05-07T17:20:23+00:00] INFO: Starting Chef Run for precise64
[2014-05-07T17:20:23+00:00] INFO: Running start handlers
[2014-05-07T17:20:23+00:00] INFO: Start handlers complete.

================================================================================
Recipe Compile Error in /tmp/vagrant-chef-2/chef-solo-1/cookbooks/mysql/libraries/provider_mysql_service_omnios.rb
================================================================================

LoadError
---------
no such file to load -- chef/provider/lwrp_base

Cookbook Trace:
---------------
  /tmp/vagrant-chef-2/chef-solo-1/cookbooks/mysql/libraries/provider_mysql_service_omnios.rb:1

Почему это не удается? Интересно, есть ли у кулинарной книги mysql зависимость от другой кулинарной книги, которая должна предоставить файл «chef/provider/lwrp_base».

ОБНОВЛЕНИЕ: проблема может заключаться в том, что Vagrant использует Chef 10.14.2, а кулинарная книга помечена здесь как требующая Chef 11 (http://community.opscode.com/cookbooks/mysql).

Здесь показано довольно много файлов, ссылающихся на LWRP:

> gci .\cookbooks * -rec | select-string lwrp

cookbooks\mysql\CHANGELOG.md:320:- [COOK-684] remove mysql_database LWRP
cookbooks\mysql\libraries\provider_mysql_client.rb:5:    class MysqlClient < Chef::Provider::LWRPBase
cookbooks\mysql\libraries\provider_mysql_client_debian.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_client_fedora.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_client_omnios.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_client_rhel.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_client_smartos.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_client_ubuntu.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service.rb:5:    class MysqlService < Chef::Provider::LWRPBase
cookbooks\mysql\libraries\provider_mysql_service_debian.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service_fedora.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service_omnios.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service_rhel.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service_smartos.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\provider_mysql_service_ubuntu.rb:1:require 'chef/provider/lwrp_base'
cookbooks\mysql\libraries\resource_mysql_client.rb:1:require 'chef/resource/lwrp_base'
cookbooks\mysql\libraries\resource_mysql_client.rb:5:    class MysqlClient < Chef::Resource::LWRPBase
cookbooks\mysql\libraries\resource_mysql_service.rb:1:require 'chef/resource/lwrp_base'

person Frank Schwieterman    schedule 07.05.2014    source источник


Ответы (3)


Вы можете решить эту проблему с помощью плагина vagrant omnibus.

Просто запустите «vagrant plugin install vagrant-omnibus», чтобы добавить его, и добавьте «config.omnibus.chef_version = :latest» в начало вашего vagrantfile, например так

Vagrant.configure("2") do |config|

  config.omnibus.chef_version = :latest

  ...

end
person Nate    schedule 09.09.2014

В каталоге над вашими поваренными книгами это может показать, что ссылается на lwrp:

найти поваренные книги -exec grep lwrp {} \; -Распечатать

person smcracraft    schedule 07.05.2014
comment
Хорошо, я добавил некоторые связанные заметки. Я думаю, вопрос в том, как мне получить lwrp? - person Frank Schwieterman; 07.05.2014

Хорошо, проблема заключалась в том, что на моем бродяге были установлены более старые версии Ruby и Chef. Теперь все работает, источник находится по адресу https://github.com/fschwiet/helloVagrant/tree/ceafdc9916e788136ae79f20722e77d76e2f1eef

person Frank Schwieterman    schedule 07.05.2014