veewee で vagrant 用の仮想サーバ(box)を自動作成

Vagrant の有用性については、Vagrant で開発環境構築を自動化しよう で、熱く語ってみたのだが、一つだけ足りない機能があった。それは、仮想サーバのひな形であるベースBOXの作成は自動化されておらず、Vagrant に必要な環境を整えるのは意外と面倒なことであった。

veewee は、Vagrant の ベースBOX を自動作成するためのツール。vagrant コマンドのプラグインとして動作する。ディストリビューションが配布しているインストールイメージを元に完全に自動で Vagrant の仮想サーバとして必要な環境を作成してくれる。

今回は、

で動作を確認してみた。

インストールや使い方は、
https://github.com/jedi4ever/veewee
の README を読めば大体わかる。

veewee のインストール

vagrant が動作する環境上で、gem からインストールした。

$ sudo gem install bandler
$ sudo gem install veewee

veewee を使ってみる

各インストールイメージに合わせたテンプレートを用意してある。確認してみる。

$ vagrant basebox templates
The following templates are available:
vagrant basebox define '<boxname>' 'archlinux-i386'
vagrant basebox define '<boxname>' 'archlinux-x86_64'
vagrant basebox define '<boxname>' 'CentOS-4.8-i386'
vagrant basebox define '<boxname>' 'CentOS-5.6-i386'
vagrant basebox define '<boxname>' 'CentOS-5.6-i386-netboot'
vagrant basebox define '<boxname>' 'CentOS-5.6-x86_64-netboot'
vagrant basebox define '<boxname>' 'CentOS-6.0-i386'
:
(以下省略)

'ubuntu-11.04-server-i386' というテンプレートを使って base box を作成してみる。
まずは、myubuntubox という名前で base box を作成するために必要な設定ファイルを作成する。

$ vagrant basebox define myubuntubox ubuntu-11.04-server-i386

カレントディレクトリ上に definitions/myubuntubox というディレクトリができた。
この中にいくつかの設定ファイルと、インストール後の設定スクリプトが生成された。

$ ls definitions/myubuntubox/
definition.rb	postinstall.sh	preseed.cfg

このまま、ビルド用のコマンドを実行してみる。

$ vagrant basebox build myubuntubox

We did not find an isofile in <currentdir>/iso. 

The definition provided the following download information:
- Download url: http://releases.ubuntu.com/11.04/ubuntu-11.04-server-i386.iso
- Md5 Checksum: ce1cee108de737d7492e37069eed538e


Download? (Yes/No)  |No|
y
You have choosen for manual download: 
curl -C - -L 'http://releases.ubuntu.com/11.04/ubuntu-11.04-server-i386.iso' 
  -o 'iso/ubuntu-11.04-server-i386.iso'
md5 'iso/ubuntu-11.04-server-i386.iso' 

・・・インストール用のイメージがないとのこと。そして自分でダウンロードしろと指示された。

$ mkdir iso
$ curl -C - -L 'http://releases.ubuntu.com/11.04/ubuntu-11.04-server-i386.iso' 
    -o 'iso/ubuntu-11.04-server-i386.iso'

改めてビルド用のコマンド実行すると自動でビルドを始める。普通にインストールするのと同じく時間がかかるので、完了するまでじっくり待つ。

$ vagrant basebox build myubuntubox

完成すると、BOXファイルにエクスポートして、配布可能なパッケージ "myubuntubox.box" が出来上がる。

$ vagrant basebox export myubuntubox

myubuntubox.box を vagrant のベースBOX として利用してみる。

$ vagrant box add myubuntubox myubuntubox.box
$ mkdir foo
$ cd foo
$ vagrant init myubuntubox
$ vagrant up
$ vagrant ssh

時間はかかるが、全自動で、しっかり動作する環境が得られた。これはいいかも!?

まだまだかも?

Ubuntu の場合はうまくいったのだが、CentOS ではまだ成功していない。veewee に頼らず手作業で環境を作れるようにしておいた方が無難かもしれない。