ChefでRuby2.0をソースからインストールしてみる
Vagrantの仮想マシンにChefを実行するための準備をする
の続き
Ruby2.0をインストールするためのCookbookを作成する。
$ cd chef-repoのディレクトリ $ knife cookbook create ruby2 -o site-cookbooks
files/defaultのディレクトリに、Ruby2.0のソースをダウンロードしておく。
$ wget ftp://core.ring.gr.jp/pub/lang/ruby/2.0/ruby-2.0.0-p353.tar.gz -P site-cookbooks/ruby2/files/default
レシピを作成する。
$ vi site-cookbooks/ruby2/recipes/default.rb
%w{gcc gcc-c++ make openssl-devel zlib-devel readline-devel}.each do |p| package p do action :install end end cookbook_file "/tmp/ruby-2.0.0-p353.tar.gz" do source "ruby-2.0.0-p353.tar.gz" mode 0644 end bash 'install_ruby' do user 'root' code <<-EOC cd /tmp tar xzf ruby-2.0.0-p353.tar.gz cd ruby-2.0.0-p353 ./configure --with-opt-dir=/usr/local --enable-shared --enable-option-checking make make test make install EOC creates "/usr/local/bin/ruby" end
gcc gcc-c++ make openssl-devel zlib-devel readline-devel
は無くても、Ruby2.0をインストールすることはできるが
後々必要になりそうなので入れておく。
not_if "which ruby" だとうまく行かなかったので creates "/usr/local/bin/ruby" でインストール済みの場合はインストールしないようにした。よく分からない。
nodesのjsonを記述し、
$ vi nodes/centos.json
{ "run_list": [ "recipe[ruby2]" ] }
$ knife solo cook centos
ログインすると、Rubyの2.0がインストールされているのが確認できる。
$ ssh centos
centos$ ruby -v ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux]