Edited at

サードパーティのクックブックを利用して簡単にRuby環境を整える方法

More than 5 years have passed since last update.


はじめに

VagrantとChef使ってますか?

これらを組み合わせると、独自の環境を自動で構築することが出来るようになります。

開発環境を用意したいときに、気にせず試して壊せる環境が簡単に手に入るので、本業の開発作業が捗ります。

ただ、そのためにはクックブックを書かないといけないですよね。

独自の環境を整えるためにクックブックを書くのは仕方ないですが、開発環境のベース作りはなるべく楽をしたいものです。

そこでこの記事では例として、サードパーティのクックブックを利用して、Ruby環境を整える方法をご紹介します。


利用するもの

今回は下記のソフトウェアおよびクックブックを利用します。


Vagrantでサーバを起動してみる

Vagrantの使い方をご紹介します。

既にご利用の方は飛ばして下さい。


VirtualBoxのインストール



  1. https://www.virtualbox.org/ にアクセス

  2. サイドバーの Downloads を選択

  3. 自分のOS用のパッケージを選択してダウンロード

  4. インストール


Vagrantのインストール



  1. http://www.vagrantup.com/ にアクセス

  2. DOWNLOAD を選択

  3. 自分のOS用のパッケージを選択してダウンロード

  4. インストール


Vagrantの作成


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'precise64'
config.vm.box_url = 'http://files.vagrantup.com/precise64.box'
end


どのboxを使用しても構いません


起動

$ vagrant up


削除

$ vagrant destroy


Berkshelfでサードパーティのクックブックを使ってみる

Berkshelfの使い方をご紹介します。

既にご利用の方は飛ばして下さい。


Berkshelfのインストール

$ gem install berkshelf


Berksfileの作成

site :opscode

cookbook 'apt'

上記の様に設定すると、Opscode commuity(http://community.opscode.com/cookbooks) からクックブックを検索して使用します。

この場合は、http://community.opscode.com/cookbooks/apt を使用します。


Vagrantプラグインのインストール

BerkshelfをVagrantで使えるようにするためにプラグインをインストールします。

また、Chefが必要となるため、vagrant-omnubusもインストールします。

$ vagrant plugin install vagrant-berkshelf

$ vagrant plugin install vagrant-omnibus


Vagrantfileの編集

プラグインの設定およびChefの設定を追加します。


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'precise64'
config.vm.box_url = 'http://files.vagrantup.com/precise64.box'

# プラグインの設定
config.omnibus.chef_version = '11.8.2'
config.berkshelf.berksfile_path = 'Berksfile'

# chefの設定
config.vm.provision :chef_solo do |chef|
chef.run_list = %w(
recipe[apt]
)

end
end



起動

$ vagrant up

サーバが起動し、recipe[apt]が実行されます。


サードパーティのクックブックを利用して簡単にRuby環境を整える

いよいよ本題です。

下記のサードパーティクックブックを利用して rbenv をインストールし、Ruby環境を整える方法をご紹介します。

https://github.com/fnichol/chef-ruby_build

https://github.com/fnichol/chef-rbenv


Berksfileの編集

rbenvの設定を追加します。

なお、fnicol/chef-rbenvはOpscode commuityに登録されていないため、githubのオプションを追加します。

site :opscode

cookbook 'apt'
cookbook 'ruby_build’
cookbook 'rbenv', github: 'fnichol/chef-rbenv'


Vagrantfileの編集

rbenvに関する設定を追加します。

下記設定では、2.0.0-p353をインストールし、さらに2.0.0-p353にbundlerがインストールされます。


Vagrantfile

# -*- mode: ruby -*-

# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = 'precise64'
config.vm.box_url = 'http://files.vagrantup.com/precise64.box'

# プラグインの設定
config.omnibus.chef_version = '11.8.2'
config.berkshelf.berksfile_path = 'Berksfile'

# chefの設定
config.vm.provision :chef_solo do |chef|
chef.run_list = %w(
recipe[apt]
recipe[ruby_build]
recipe[rbenv::user]
)

chef.json = {
'rbenv' => {
'user_installs' => [{
'user' => 'vagrant',
'rubies' => ['2.0.0-p353'],
'global' => '2.0.0-p353',
'gems' => { '2.0.0-p353' => [
{'name' => 'bundler'}
]}
}]
}
}
end
end



起動

$ vagrant up

既に起動している場合は下記を実行して下さい

$ vagrant reload --provision

これだけで、Ruby環境が構築されます。

※ 結構時間かかります、気長に待ちましょう。


さいごに

いかがでしたでしょうか。

サードパーティのクックブックを使えば、新たにクックブックを作成することなく環境を構築することが出来ます。

何でもかんでも一から作成するのではなく、ときには既にあるものを使ってみると、今回のように効率よく環境構築ができますよ。