Vagrant の Box を作成する (1)
veewee と vagrant 1.0.7 で box を作成したのだが、 それを vagrant 1.1.2 で使用しても問題ないようだった。 作成するときに試行錯誤したことをだいたいそのまま書いてあるので、 以下の手順はもう少し簡略化できると思う。
Vagrant のインストール
Ubuntu 12.10 で vagrant の box を作成する。 Ubuntu のパッケージにも vagrant の deb はあるが最新のバージョンではないので http://downloads.vagrantup.com/ から最新の deb をダウンロードしてインストールする。 今回はバージョン 1.1.2 の vagrant_x86_64.deb をダウンロードした。
dpkg -i vagrant_x86_64.deb
gem の vagrant をすでにインストールしていたため、
vagrant -v
としてもバージョンが 1.1.2 にならずにはまった。もし gem の vagrant をインストールしているなら
gem uninstall vagrant
でアンインストールする。
Ubuntu の ISO イメージ
Ubuntu 13.04 の server 版で vagrant の box を作ることにする。
zsync http://cdimage.ubuntu.com/ubuntu-server/daily/current/raring-server-amd64.iso.zsync
でダウンロードした。
veewee のインストール
gem でインストールすれば良いと思って
gem install veewee
としたが、これだと gem の vagrant 1.0.7 がインストールされてしまう。 rvm を利用しているので veewee 専用の gemset を用意することにした。
rvm gemset use veewee --create
gem install fog -v 1.9
gem install veewee
veewee の依存関係のために fog の 1.9 を先にインストールする。
vagrant 1.1.2 の設定ファイルがあると動かない。まだ、vagrant を使っていない場合は
rm -r ~/.vagrant
として設定を削除する。そうでないなら ~/.vagrant を後で元に戻せるように別の名前にしておく。
vagrant basebox
veewee をインストールすると vagrant basebox が使えるようになる。
vagrant basebox templates
とすると basebox のテンプレートの一覧が表示される。この中から選択して
vagrant basebox define 'mybuntubox' 'ubuntu-12.10-server-amd64'
のようにすると definitions/mybuntubox/ に設定が作成される。
テンプレートにない Ubuntu 13.04 の box を作りたい。
vagrant basebox define 'ubuntu-raring-server' 'ubuntu-12.10-server-amd64'
ubuntu-12.10-server-amd64 のテンプレートを元にして definitions/ubuntu-raring-server/definition.rb を編集する。 上の ISO イメージの md5sum は http://cdimage.ubuntu.com/ubuntu-server/daily/current/MD5SUMS にある。 今回は次のように編集する。
:iso_file => "raring-server-amd64.iso",
:iso_src => "http://cdimage.ubuntu.com/ubuntu-server/daily/current/raring-server-amd64.iso",
:iso_md5 => '864fa43ca6c74936f9c4b08609bab759',
ダウンロードしてあった raring-server-amd64.iso を iso に移す。
mkdir iso
mv raring-server-amd64.iso iso
次のコマンドを実行すると仮想マシンの作成が始まる。
vagrant basebox build ubuntu-raring-server
インストールと設定が終了したら
vagrant basebox export ubuntu-raring-server
で box のファイルができる。 Ubuntu のインストール自体は kickstart という仕組みで自動で進むようだ。