@nqounetです。

vagrantでchefを使って色々頑張っていたりするわけですが,疲れました.

同じ仮想環境で良ければ,ひとつ作ったものを使い回せば良い,ということに,最近ようやく気づきました.

仮想環境を自分自身で再利用する

Vagrantのboxを使う時は,元になる仮想マシン(box)がローカルに保存されます.

色々と試していたら,結構な数になっているかもしれません.

保存されているboxはvagrant box listで見ることが出来ます.

1
2
3
4
5
6
7
$ vagrant box list
Berkshelf-CentOS-6.3-x86_64-minimal (virtualbox)
CentOS-6.4-i386-plenv (virtualbox)
CentOS-6.4-x86_64-plenv (virtualbox)
base (virtualbox)
base64 (virtualbox)
centos64_64 (virtualbox)

で,ここにあるboxは,Vagrantfileでbox_urlを指定しなくても利用できます.

自分自身で使うだけなら,このリストに登録(ローカルに保存)しておけば良い,ということです.

それをするには,vagrant packageを使います.

1
2
3
4
5
6
$ vagrant package
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Creating temporary directory for export...
[default] Exporting VM...
[default] Compressing package to: /Users/nobu/sandbox/vm-plenv/package.box

そうすると,カレントディレクトリにpackage.boxという名前で,現在のVMが保存されます.

あとは,それをvagrant box addで名前をつけて追加してやれば良いです.

1
$ vagrant box add new-box package.box

こうすると,先ほどのVMがnew-boxという名前で保存され,vagrantから手軽に使えるようになります.

1
2
3
4
$ mkdir ~/vagrant-new-box && cd ~/vagrant-new-box
$ vagrant init new-box
$ vagrant up
$ vagrant ssh