[Vagrant & VirtualBox] Vagrant: package で独自の Box を作成する
memo.
以前に試していましたが、
こちらを読んで新しいことを知ったので、あらためてメモ。
Contents
Box を作成する
vagrant up でプロビジョニングする
なにがしかの Box を vagrant up
で立ち上げます(ここでは vccw)。
% vagrant up
VM で /etc/udev を無効化する
VM へ ssh します。
% vagrant ssh
VM 内で下記を実行し、/etc/udev を無効化します。
$ sudo ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
上記で /dev/null へ捨てている設定は、
今時のLinuxはudevが親切にもネットワークインターフェース名とMACアドレスの関係を固定化してくれるんだが、この機能って同じディスクイメージの複製が使いまわされることが前提の仮想マシンを前提にすると非常に邪魔になる。具体的にはコピーしたイメージ上ではeth0が出来なかったり、eth1になっちゃったりとか…。
とのこと。
VM から exit します。
$ exit
Box を作成、登録する
設定を終えた box を package します。
% vagrant package
カレントディレクトリに package.box が作成されたので、これを登録します。
% vagrant box add vccw package.box
下記で登録を確認できます。
% vagrant box list
実体はこちら。
% ls ~/.vagrant.d/boxes
利用した一時ファイルは削除します。
% rm package.box
つかいかた
Vagrantfile 内で作成した Box を指定すると、再利用してくれます。
VM_BOX = "vccw" # for 32bit
補遺
せっかくなので作り直して時間を計ってみます。
% vagrant destroy
% time vagrant up
vccw box を再利用した場合。
vagrant up 10.31s user 6.23s system 2% cpu 12:31.68 total
しなかった場合。
vagrant up 9.51s user 4.56s system 0% cpu 49:27.04 total
しかし、自分の環境は遅いな。