【问题标题】:"no such file to load -- chef/provider/lwrp_base" when trying to run mysql cookbook via Vagrant using chef-solo provisioner“没有这样的文件要加载——厨师/供应商/lwrp_base”当尝试使用厨师独奏供应商通过流浪者运行mysql食谱时
【发布时间】:2014-05-07 17:32:26
【问题描述】:

好吧,我在这里使用了一堆对我来说是新的技术,所以我不确定如何解决问题。我对 vagrant 有一点经验,现在正在努力学习 Chef。

我已经克隆了这本食谱:https://github.com/opscode-cookbooks/mysql 到我的 ./cookbooks/mysql 目录。我正在尝试使用 Vagrantfile 通过 Vagrant 运行该食谱:

# 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'

【问题讨论】:

    标签: vagrant chef-solo


    【解决方案1】:

    您可以使用vagrant omnibus plugin 克服这个问题

    只需运行 'vagrant plugin install vagrant-omnibus' 来添加它,然后将 'config.omnibus.chef_version = :latest' 添加到 vagrantfile 的顶部,就像这样

    Vagrant.configure("2") do |config|
    
      config.omnibus.chef_version = :latest
    
      ...
    
    end
    

    【讨论】:

      【解决方案2】:

      在您的食谱上方的目录中,这可能会显示什么是 引用 lwrp:

      查找食谱 -exec grep lwrp {} \; -打印

      【讨论】:

      • 好的,我添加了一些相关的注释。我想问题是,我如何获得 lwrp?
      【解决方案3】:

      好的,问题是我的 vagrant box 安装了旧版本的 Ruby 和 Chef。现在一切正常,来源在https://github.com/fschwiet/helloVagrant/tree/ceafdc9916e788136ae79f20722e77d76e2f1eef

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-27
        • 2013-11-03
        • 1970-01-01
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多