xbuild と Cloud-Init で EC2 に Ruby 環境をサクッと作る
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
に吐かれたログを確認してみてください。