使用Chef和Vagrant在Ubuntu上安装Ruby 1.9.2

时间:2011-10-22 12:58:30

标签: ruby ubuntu chef vagrant

我想用Ruby 1.9.2配置一个新的Ubuntu 10.04盒子。我正在使用Vagrant和Chef Solo为盒子提供我需要的一切(例如Rails,Rake,MongoDB)。默认的Ruby版本是1.8.7。

有没有办法将Ruby 1.9.2作为Vagrant / Chef配置流程的一部分安装?

我在Chef网站上读到了关于使用我自己的bootstrap模板 - 可能是用刀 - 例如this one,但是因为我使用的是Vagrant我不知道在哪里放这个模板 - 我不知道没有chef-repo,.chef目录,甚至是/ etc / chef中安装的任何Chef东西。

3 个答案:

答案 0 :(得分:11)

首先,一点上下文。大多数Vagrant基本框都安装了Ruby供Ch​​ef和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 cookbook对于RVM可能很方便http://community.opscode.com/cookbooks/rvm

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

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

答案 1 :(得分:2)

我知道这个问题已经很老了,而且已经回答了,但我希望对于这个问题绊倒的人来说,这仍然很有趣。

我已经构建了一个Github repo,它打算提供几个配置,用于构建和配置Vagrant框,而无需从头开始编写配置文档

例如,使用当前提供的配置,您可以使用以下内容构建和配置框

  • Ruby 1.9.2-p290,使用rbenv管理并使用Bundler for gems
  • PostgreSQL 8.4
  • MongoDB的

我的博客上有introduction article

由于这几乎与请求相符,我觉得值得添加这个迟到的答案:)

答案 2 :(得分: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