veewee で vagrant 用の仮想サーバ(box)を自動作成
Vagrant の有用性については、Vagrant で開発環境構築を自動化しよう で、熱く語ってみたのだが、一つだけ足りない機能があった。それは、仮想サーバのひな形であるベースBOXの作成は自動化されておらず、Vagrant に必要な環境を整えるのは意外と面倒なことであった。
veewee は、Vagrant の ベースBOX を自動作成するためのツール。vagrant コマンドのプラグインとして動作する。ディストリビューションが配布しているインストールイメージを元に完全に自動で Vagrant の仮想サーバとして必要な環境を作成してくれる。
今回は、
- MacOS X 10.6
- VirtualBox 4.1.0
- vagrant 0.8.6
- veewee 0.2.0
で動作を確認してみた。
インストールや使い方は、
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
時間はかかるが、全自動で、しっかり動作する環境が得られた。これはいいかも!?