Vagrant & VeeWee を再設定してCentOS 6.2のBoxを作成してみた

以前Mac(Lion)に試しに入れたVagrantでセットアップしたVirtualBoxのイメージが/private/var/root/VirtualBox VMs以下に作られてしまうのが嫌だったので、Vagrantを入れ直した。ついでにVeeWeeも入れ直して、最新のCentOS 6.2のVagrant Boxを作ってみる。

RubyRubyGemsの詳細を押さえていないので不明だけど、Macだと最初からRubyがシステムのところに入っているのが問題? そこでRVMRubyRubyGemsを$HOME以下に全てインストールすることにした。

RVMのインストール

以下のコマンドを実行するだけ。簡単すぎる!

bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)

rvmコマンドが使えるように.bash_profileを読み直す。

source ~/.bash_profile 

Ruby 1.9.3-p0のインストール

RVMコマンドでバージョン番号を指定すれば簡単にインストールできる。すごい便利。とりあえず最新安定板の1.9.3をインストールした。rubyのコンパイルも行われるのでしばらく時間がかかります。

rvm install 1.9.3

インストールした1.9.3を使うようにセットアップ。

rvm use 1.9.3

さらに、再ログインしても維持するためにシステムのデフォルトを1.9.3にする。

rvm --default 1.9.3

Vagrantのインストール

gemコマンドでインストールするだけ。

gem install vagrant

VeeWeeのインストール

こちらもソースからインストールした。gemでもインストールできるが、用意されているテンプレートが少なかったので。

git clone https://github.com/jedi4ever/veewee.git
cd veewee
bundle install

最後にエイリアスを設定する。

alias vagrant="bundle exec vagrant"

オリジナルのVagrantBoxの作成

Vagrantで使えるベースBoxは http://www.vagrantbox.es/ で公開されているけど、欲しい物が無いときは自分で作るしかない。VeeWeeを使うとベースBoxを簡単に作ることができる。先ほど入れたVeeWeeで早速作ってみる。

今回はCentOS 6.2のBoxを作ってみる。テンプレートに「CentOS-6.2-x86_64-minimal」があるのでこれをベースに作成してみる。Box名は「centos_62_x86_64_ja」とした。なお、コマンドはVeeWeeのルートディレクトリで実行すること。

vagrant basebox define centos_62_x86_64_ja CentOS-6.2-x86_64-minimal

definitions/centos_62_x86_64_ja/以下に3ファイルができている。これらのファイルを編集すれば、作成するVMの設定(CPU、メモリ、HDDサイズなど)とかインストールされるソフトウェアをカスタマイズできる。

  • definition.rb
  • ks.cfg
  • postinstall.sh

今回はks.cfgをちょっと修正してみた。

  • インストール時に言語設定がen_US.UTF-8で行われているので、ここをja_JP.UTF-8に変更
  • キーボードをusからjp106に変更
  • タイムゾーンUTCからAsia/Tokyoに変更
iinstall
cdrom
lang ja_JP.UTF-8
keyboard jp106
network --bootproto=dhcp
rootpw --iscrypted $1$damlkd,f$UC/u5pUts5QiU3ow.CSso/
firewall --enabled --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone Asia/Tokyo
...

後、definition.rbで定義されているCentOSのISOイメージ取得先も変更。デフォルトだとダウンロードが遅かったので日本のミラーサイトに変更。

ではこれでBoxをビルドしてみる。以下ののコマンドを実行する。

vagrant basebox build centos_62_x86_64_ja

CentOSのISOイメージをダウンロードするか求められるので、「Yes」とするとダウンロードが開始される。ここでしばらく待ち。もし、既に手元にISOイメージがある場合は、VeeWeeのディレクトリ以下にisoディレクトリを作り、そこに配置しておけば良い。
ダウンロードが終わると、後は勝手にVirtualBoxの起動、OSインストールが行われる。全自動でセットアップされる様子を見ているとスゲー!! とちょっと感動しちゃう。

OSが出来上がったら、あとはVagrant用のBoxとしてエクスポートする。以下のコマンドを実行する。VeeWeeのディレクトリ以下にcentos_62_x86_64_ja.boxが出来上がる。

vagrant basebox export centos_62_x86_64_ja

エクスポートしたBoxをVagrantに登録する。これで$HOME/.vagrant.d/boxes 以下に登録される。

vagrant box add 'centos_62_x86_64_ja' 'centos_62_x86_64_ja.box'

作成したVagrat Boxで環境構築してみる

適当にVagrant用のディレクトリを作成。

mkdir ~/centos_62_x86_64_ja
cd centos_62_x86_64_ja

VeeWee用にaliasを設定してしまっているので解除する。

unalias vagrant

登録した「centos_62_x86_64_ja」で初期化し、インスタンスを起動する。これで環境構築は完了。

vagrant init 'centos_62_x86_64_ja'
vagrant up

最後に

せっかくなので作成したCentOS 6.2(日本語設定版)のBoxをDropBoxで公開しておきます。
http://dl.dropbox.com/u/7023440/vagrant-boxs/centos_62_x86_64_ja.box
Vagrantがインストールされている環境であれば、以下のコマンドですぐに環境構築できます!!

vagrant box add centos_62_x86_64_ja http://dl.dropbox.com/u/7023440/vagrant-boxs/centos_62_x86_64_ja.box