8

我想用 Ruby 1.9.2 配置一个新的 Ubuntu 10.04 机器。我正在使用 Vagrant 和 Chef Solo 为这个盒子提供我需要的所有其他东西(例如 Rails、Rake、MongoDB)。默认的 Ruby 版本是 1.8.7。

有没有办法在 Vagrant/Chef 配置过程中安装 Ruby 1.9.2?

我在 Chef 网站上阅读了有关使用我自己的引导模板(可能带有刀)的信息,例如这个,但是因为我使用的是 Vagrant,所以我不确定该模板放在哪里——我没有厨师—— repo,一个 .chef 目录,甚至是安装在 /etc/chef 中的任何 Chef 内容。

4

3 回答 3

11

首先,一点上下文。大多数 Vagrant basebox 安装 Ruby 以供 Chef 和 Puppet 使用,但最新的基础盒在 /opt/ruby 中执行此操作,而不是使用系统包。他们还将 /opt/ruby/bin 添加到路径中,但在最后。

这个 VeeWee 模板显示了 10.04 盒子当前是如何构建的:https ://github.com/jedi4ever/veewee/blob/master/templates/ubuntu-10.04.3-server-i386/postinstall.sh

至于您的问题,它们是您可能试图解决的几种不同的情况,每种情况都有不同的解决方案。希望其中之一将是您正在寻找的。

使用 1.9.2 运行 Chef 食谱

您可能想要在 1.9.2 下测试运行 Chef 食谱,并且您不希望 1.8.7 靠近您的盒子。解决这个问题的最佳方法是创建自己的 VeeWee 模板并为自己构建一个新的 basebox。您可以修改上面链接的版本以编译 1.9.2 而不是 1.8.7,并按照https://github.com/jedi4ever/veewee上的说明进行操作

使用 Ruby 1.9.2 进行开发

可能更有可能是您想使用 1.9.2 破解一些 Ruby 代码。为此,您只需要安装 Ruby 并将二进制文件放在 /opt/ruby 条目之前的路径上。有几种方法可以做到这一点:

所有这些都可以使用 Chef 食谱进行管理。我可能不会选择编译选项,只留下直接下载和打包资源,或者以下 RVM 食谱可能对 RVM 很方便http://community.opscode.com/cookbooks/rvm

包资源上的 *gem_binary* 选项在这里也可能有用,这取决于您希望如何确保为新的 1.9.2 Ruby(而不是 opt 中的 1.8.7)安装 gems

的目标knife bootstrap是在目标系统上安装 Chef,以便它可以运行 Chef Client。Vagrant baseboxes 往往已经安装了 Chef,所以除非你正在做一些特定的事情并且想要运行多个版本的 Chef,否则我会避免这条路线。像http://vagrantup.com/docs/provisioners/chef_solo.html这样的内置 Chef 供应商是一个更好的选择。

于 2011-10-22T19:04:49.540 回答
2

I know the question is quite old and already answered, but I hope this still may be interesting for someone stumbling upon this question.

I've built a Github repo which intends to provide several configurations for building and provisioning a Vagrant box without requiring to write a provisioning recipe from scratch.

For example, using the currently provided configuration, you can build and provision a box with:

  • Ruby 1.9.2-p290, managed with rbenv and using Bundler for gems
  • PostgreSQL 8.4
  • MongoDB

Here is an introduction article on my blog.

Since this almost match the request, I felt it was worth adding this late answer :)

于 2012-05-20T08:10:45.840 回答
0

这是我用来安装 Ruby 1.9.2 的配方

package "libffi5" do
  action :install
  provider Chef::Provider::Package::Apt
end

package "ruby-1.9.2" do
  action :install
  source "/tmp/vagrant-chef/cookbooks-0/ruby-1.9.2/files/default/ruby-1.9.2-p290_i386.deb"
  provider Chef::Provider::Package::Dpkg
end
于 2011-10-23T23:02:41.163 回答