1

我对流浪者和厨师有这个问题。我已经准备好要使用的 Vagrantfile 和厨师食谱。基本上 vagrantfile 是由一些 env 变量配置的,所以我可以从 Vagrantfile 创建新的虚拟机,并且所有配置和配置都由厨师完成,但是一旦虚拟机完成,厨师就无法工作。

当我执行“vagrant provision”时,我收到以下错误消息:

/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [bigdecimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)

我不能过多地更改版本,以免破坏某些东西...正如您从错误消息中看到的那样,有 rvm (1.15.8)。1.9.3 版中的 Ruby 和 10.12.0 版中的厨师。

在厨师确定工作之前,因为我能够创建虚拟机......但后来发生了一些变化,我不知道是什么......我正在来回浏览所有厨师角色/食谱/食谱,但我不知道:(

RVM 已为所有用户安装,因此 /etc/profile.d/rvm.sh 用于环境设置。

也许你的一些提示可以帮助我,谢谢!

4

3 回答 3

0

我也包括了 Vagrant 食谱,但这并没有完全解决问题。

我在我的食谱中添加了以下属性:

default.rvm.vagrant.system_chef_client = "/usr/bin/chef-client"
default.rvm.vagrant.system_chef_solo = "/usr/bin/chef-solo"

因为我的默认 chef-client 和 chef-solo 可执行文件在 /usr/bin

RVM Vagrant 配方将几个包装脚本添加到 /usr/local/bin 目录中。当我rvm provision在已经配置服务器一次后尝试运行时,它看起来完全忽略了/usr/local/bin 中的chef-client和可执行文件。chef-solo

为了解决这个问题,我还在我的 Vagrantfile 中添加了以下内容,它明确设置$PATH首先查看 /usr/local/bin:

chef.binary_env="PATH=/usr/local/bin:/usr/bin:/usr/sbin:/bin"
于 2015-01-09T18:15:25.363 回答
0

您需要包括vagrant recipe。它做了两件事:将 vagrant 用户添加到rvm组并安装 chef-solo/chef-client 包装脚本。

请记住node['rvm']['vagrant']['system_chef_solo']使用和node['rvm']['vagrant']['system_chef_client']属性将包装器指向正确的二进制文件(取决于系统红宝石所在的位置) 。

厨师独奏的例子:

chef.add_recipe "rvm::vagrant"

chef.json = {
  :rvm => {
    :vagrant => {
      :system_chef_solo => '/usr/lib/ruby/gems/1.8/gems/chef-11.4.0/bin/chef-solo',
      :system_chef_client => '/usr/lib/ruby/gems/1.8/gems/chef-11.4.0/bin/chef-client'
    }
  }
}

此外,您还有另外两个选择:

于 2013-11-06T20:15:59.050 回答
0

由于您的 chef 运行安装rvm和 rubies,您必须更改chef-solo执行方式以具有前缀rvm system do chef-solo. 这将确保rvm从 Chef OmniBus ruby​​ 或它想要/需要使用的任何其他 ruby​​ 中摆脱出来。

在我的 vagrantfile 中,我使用 shell provisioner 来运行 chef-solo,如下所示:

# with rvm installed, chef will not work with its ruby. must use system!
[ -f /usr/local/rvm/bin/rvm ] && pfx="rvm system do"

$pfx chef-solo -c /vagrant/chef-solo.rb -j /vagrant/chef-solo.js --no-fork
于 2013-12-14T02:50:44.683 回答