Y-Ken Studio

新しもの好きのデータエンジニアが四方山話をお届けします。

RPMパッケージを利用したCentOSのVagrant環境構築

Vagrantとは

Vagrant は仮想マシン(VM)をコマンドラインで操作するツールです。
PuppetやChefによるサーバ環境構築ツールと組み合わせる事で、
とても簡単にVM環境の構築が出来るようになります。
Vagrantについての詳細については Vagrant - naoyaのはてなダイアリー が参考になります。

提供パッケージ

公式にrpm等のパッケージ提供が行われています。
http://downloads.vagrantup.com/

  • MacOSX

    • Vagrant.dmg
  • Windows

    • Vagrant.msi
  • RedHat/CentOS

    • vagrant_i686.rpm
    • vagrant_x86_64.rpm
  • Debian

    • vagrant_i686.deb
    • vagrant_x86_64.deb
  • Arch Linux

    • vagrant_i686.pkg.tar.xz
    • vagrant_x86_64.pkg.tar.xz

インストール方法

CentOS-6.4(64bit) に Vagrant-1.1.0 をインストールするならば、以下のコマンドが利用できます。

yum localinstall http://files.vagrantup.com/packages/194948999371e9aee391d13845a0bdeb27e51ac0/vagrant_x86_64.rpm

Vagrantに内蔵されているgemの場所

以下のように利用することで、gem install/update等が出来ます。

  • PATHの通っていない所にありますので、以下のようにフルパスでアクセスする
/opt/vagrant/embedded/bin/gem install *** 
  • .bashrcに以下の行を書いて、vagrant-gemとしてコマンド補完できるようにする
alias vagrant-gem='/opt/vagrant/embedded/bin/gem'

パッケージ利用が嬉しい理由

VagrantパッケージにRubyバイナリを内蔵するという実装は大変嬉しいです。
内蔵するメリットは、対象となるマシンのRubyバージョンが何であっても、古くても構わず動くということにあります。
2013年3月現在、Rubyは1.9.3が一般的です。ところがCentOS-6.4ではRuby-1.8.7がパッケージインストール出来る最新版です。
そこでRailsアプリを動かす場合には、自前でRubyをソースからコンパイルしてインストールする手法が利用されます。rvmを使う方もいるでしょう。
しかしそれが常にVagrantが推奨するRubyバージョンとは限りませんし、仮に一緒だとしても、
Vagrantとプロダクトラインの要求するバージョンに差異が発生しうるため、可能な限り分離すべきです。

これまでgemでしか入れられないと思っていたため、Vagrantはあくまで開発環境向けに利用するものという位置づけでした。
この問題が解消されるパッケージがありますので、本番環境向けの利用も始めてみようと考えています。

なお、同様のアプローチとして、td-agentもRubyバイナリを内蔵したパッケージを提供しております。
この手法、広がっていきそうですね。

パッケージファイル構成(rpm版)

一体どこにインストールされるのか気になりますよね。具体的なファイル一覧を書き出しました。
どうやら、/opt/vagrant/以下に入るようですね。