xbuild と Cloud-Init で EC2 に Ruby 環境をサクッと作る

Posted on

EC2 に Ruby 環境を作る必要があったので、そのときの作業メモです。できるだけサクッと作れるように工夫してみました。

xbuild を使う理由

手元の Mac では rbenv を使っていますが、プロダクション環境ではバージョンは固定なので rbenv のバージョン切り替えは不要です。また rbenv init しないと使えないので、Cron で rbenv の Ruby を使うにはひと工夫が必要です。

@tagomoris さんが公開している xbuild だとパスを通すだけでなのでシンプルです。 Ruby のビルドは rbenv install するときと同じように ruby-build が使われているのもポイントです。

Cloud-Init で必須パッケージをインストール

Ruby のビルドに必要なパッケージを Cloud-Init でインストールします。 User Data に渡す yaml はこんな感じです。

#cloud-config
repo_upgrade: security
locale: ja_JP.UTF-8
timezone: Asia/Tokyo
packages:
 - git
 - gcc
 - openssl-devel
 - libyaml-devel
 - libffi-devel
 - readline-devel
 - zlib-devel
 - gdbm-devel
 - ncurses-devel

必須パッケージは ruby-build の Wiki に書かれています。 Amazon Linux なので CentOS/Fedora が一番近いです。

Ansible や Chef などのプロビジョニングツールを使いたい人は、以下の yum コマンドをコードに落とし込んでください。

$ yum install -y git gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel

xbuild で Ruby をインストール

xbuild のインストールは git clone するだけです。

$ git clone https://github.com/tagomoris/xbuild.git ~/.xbuild

Ruby 2.0.0-p645 を ~/local/ruby-2.0.0 にインストールします。 パスは自由に決めれるので、システムワイドにインストールしたければ root 権限で実行してください。

$ .xbuild/ruby-install 2.0.0-p645 ~/local/ruby-2.0.0

あとはパスを通すだけです。

$ export PATH=$HOME/local/ruby-2.0.0/bin:$PATH

$ which ruby
~/local/ruby-2.0.0/bin/ruby

$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-linux]

うまくいかない場合は /tmp に吐かれたログを確認してみてください。