Vagrant + CoreOS + Docker + Itamae で使い捨ての Ruby 2.2.0 環境を構築する #ruby #vagrant #docker #itamae

# Vagrant + CoreOS + Docker + Itamae で使い捨ての Ruby 2.2.0 環境を構築する #ruby #vagrant #docker #itamae
## <i class="fa fa-cubes" style="font-size:1em;"></i> 概要
Vagrant + CoreOS + Docker で Ruby 2.2.0 環境を構築する

## :deciduous_tree: 前提環境
* Vagrant 1.6 以降
* Virtual Box
* Ruby
* Itamae

## <i class="fa fa-files-o" style="font-size:1em;"></i> 手順
### <i class="fa fa-tint" style="font-size:1em;"></i> Ubuntu 仮想環境を構築
* 以下の記事の手順で構築する
    * <i class="fa fa-external-link-square" style="font-size:1em;"></i>  [Vagrant で Windows 上の VirtualBox に CoreOS のインスタンスを作成し、 Ubuntu 14.04 LTS のコンテナを作成し、 SSH で接続可能にする](http://qiita.com/tbpgr/items/800ad117e234b38f0a80)

### <i class="fa fa-tint" style="font-size:1em;"></i> Itamae で Ruby 2.2 をインストールする
* 基本は以下の手順で。 node.json の設定だけ ruby 2.2.0 に変更する
    * <i class="fa fa-external-link-square" style="font-size:1em;"></i> [Itamae を使って Ubuntu 14.04 LTS 環境へ Ruby 2.1.3 , Rails 4.1.8 のインストール](http://qiita.com/tbpgr/items/1674798179ff223b1d86)

~~~json:node.json
{
    "rtn_rbenv": {
        "user": "core",
        "versions": {
            "2.2.0": [
                {
                    "name": "bundler",
                    "version": "1.7.3",
                    "force": true
                }
            ]
        },
        "global": "2.2.0"
    }
}
~~~

* 。。。という手順だけでうまくいく予定でしたがエラーに。

* コミッタ界隈がざわついてる模様

<blockquote class="twitter-tweet" lang="ja"><p>「libffi-devパッケージを入れる」ことで回避できるんじゃなくて、そっちが本来の解決策なんだが信仰上の理由などによりどうしても入れられない場合のためのlast resortとして同梱してるだけなので、優先順位が逆 <a href="http://t.co/15HV88RkTc">http://t.co/15HV88RkTc</a></p>&mdash; なかだ の (@n0kada) <a href="https://twitter.com/n0kada/status/548380541880266752">2014, 12月 26</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" lang="ja"><p>ここまでのあらすじ：一度は削除され、2.2からは消えることが確定していたext/dl。しかし、とってかわるはずのlibffiがなんと今MSVCでビルド出来ない！誰かが華麗にlibffiをmswin64でも動くように直してくれないと、ext/dlが2.2でも大復活してしまうぞ！！！</p>&mdash; 成瀬 (@nalsh) <a href="https://twitter.com/nalsh/status/546991621137375232">2014, 12月 22</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet" lang="ja"><p>各位 fiddle のビルドでこけたら libffi-dev 入れてくれ</p>&mdash; SHIBATA Hiroshi (@hsbt) <a href="https://twitter.com/hsbt/status/548085823430602753">2014, 12月 25</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

* recipe に libffi-dev を追加して再試行します。

~~~ruby
execute 'apt-get update' do
  command 'apt-get update -y'
end

%w(build-essential libffi-dev).each do |e|
  package e do
    action :install
    options "--force-yes"
  end
end

include_recipe 'rtn_rbenv::user'
~~~

* 再試行

~~~bash
$ itamae ssh -p 2222 -j node.json -i /path/to/your/key -h 172.17.9.101 -u core recipe.rb
~~~

### <i class="fa fa-search-plus" style="font-size:1em;"></i> 確認

~~~bash
# Ubuntu 環境に SSH 接続
$ ssh core@172.17.9.101 -p 2222
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.17.2+ x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Dec 26 01:43:40 2014 from 172.17.9.1
$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
~~~

### :rage1: 歓喜の雄叫びを上げる

~~~bash
$ sudo apt-get install cowsay
$ cowsay -f moose -e "><" "Ruby 2.2.0 Yeah!"
 __________________
< Ruby 2.2.0 Yeah! >
 ------------------
  \
   \   \_\_    _/_/
    \      \__/
           (><)\_______
           (__)\       )\/\
               ||----w |
               ||     ||
~~~

:santa::christmas_tree: クリスマスリリースということで、 トナカイ（じゃなくて上記はヘラジカだけど）さんにお願いしました。

### <i class="fa fa-trophy" style="font-size:1em;"></i> Complete!