8

Ruby1.9.2で新しいUbuntu10.04ボックスをプロビジョニングしたいと思います。私はVagrantとChefSoloを使用して、必要なものすべて(Rails、Rake、MongoDBなど)をボックスにプロビジョニングしています。デフォルトのRubyバージョンは1.8.7です。

Vagrant / Chefプロビジョニングプロセスの一部としてRuby1.9.2をインストールする方法はありますか?

ChefのWebサイトで、このような独自のブートストラップテンプレート(おそらくナイフを使用)の使用について読んだことがありますが、Vagrantを使用しているため、このテンプレートをどこに配置するかわかりません—シェフがいません- repo、.chefディレクトリ、または/ etc/chefにインストールされているChefのもの。

4

3 に答える 3

11

まず、少しコンテキスト。ほとんどのVagrantベースボックスはChefとPuppetが使用するためにRubyをインストールしますが、最新のものはシステムパッケージを使用するのではなく/ 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つがあなたが探しているものになるでしょう。

1.9.2でChefレシピを実行する

1.9.2で実行中のChefレシピをテストしたいが、ボックスの近くに1.8.7は必要ない場合があります。これに取り組む最善の方法は、独自のVeeWeeテンプレートを作成し、新しいベースボックスを作成することです。上記のリンクを変更して、1.8.7ではなく1.9.2をコンパイルし、https://github.com/jedi4ever/veeweeの指示に従うことができます。

Ruby1.9.2で開発する

おそらく、1.9.2を使用してRubyコードをハックしたいという可能性が高くなります。このためには、Rubyをインストールし、/ opt/rubyエントリの前にバイナリをパスに配置する必要があります。これを行うにはいくつかの方法があります。

  • Rubyを最初からコンパイルする
  • パッケージを使用します。lucidのaptパッケージでは1.9.2が提供されないため、必要に応じて独自のパッケージを作成できます。または、これが私が現在使用しているものですhttps://github.com/garethr/packages/downloads
  • RVMhttp://beginrescueend.com/のようなものを使用してください

これらはすべて、Chefレシピを使用して管理できます。私はおそらくコンパイルオプションを選択しないでしょう。ただのダウンロードとパッケージリソースを残すか、次のRVMクックブックがRVMに便利なhttp://community.opscode.com/cookbooks/rvmかもしれません。

パッケージリソースの*gem_binary*オプションは、新しい1.9.2 Ruby(optの1.8.7ではなく)にgemを確実にインストールする方法によっては、ここでも役立つ場合があります。

の目標はknife bootstrap、Chefをターゲットシステムにインストールして、ChefClientを実行できるようにすることです。VagrantベースボックスにはすでにChefがインストールされている傾向があるため、特定のことを行っていて、Chefの複数のバージョンを実行したい場合を除いて、このルートは避けます。http://vagrantup.com/docs/provisioners/chef_solo.htmlのような組み込みのChefプロビジョナーの方が適しています。

于 2011-10-22T19:04:49.540 に答える
2

質問はかなり古く、すでに回答されていることは知っていますが、この質問に出くわした人にとって、これがまだ興味深いものになることを願っています。

プロビジョニングレシピを最初から作成することなく、Vagrantボックスを構築およびプロビジョニングするためのいくつかの構成を提供することを目的としたGithubリポジトリを構築しました。

たとえば、現在提供されている構成を使用して、次の機能を備えたボックスを構築およびプロビジョニングできます。

  • Ruby 1.9.2-p290、rbenvで管理され、宝石用のBundlerを使用
  • PostgreSQL 8.4
  • MongoDB

これが私のブログの紹介記事です。

これはリクエストとほぼ一致するので、この遅い回答を追加する価値があると感じました:)

于 2012-05-20T08:10:45.840 に答える
0

これが私がRuby1.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 に答える