VirtualBox上の仮想マシンをvagrantのboxにする方法はありきたりだが、たいていはLinux、OS Xでの話で、Windowsでのメモはあまりない。そこでメモ。
packageの作成
VirtualBox上の仮想マシンをパッケージする。
vagrant packageの-baseオプションにVirtualBox上の仮想マシン名を与える。
なお、そのまえにUSB、サウンドは無効にしておいたほうがよい。
C:\Users\nobwak\vagrant>vagrant package --base centos64
==> centos64: Exporting VM...
==> centos64: Compressing package to: C:/Users/doe/vagrant/package.box
カレントディレクトリにpackage.boxができた。
この中に仮想マシンが入っている。
あとはこれをどこに移動してもよい。
うーん、ポータブル。
次にこの中の仮想マシンをvagrantから参照する方法。
package.boxをvagrantから参照する。
vagrant init <新規に作成する仮想マシンの名前> <package.boxの場所>と指定してvagrantfileを作る。
もちろんvagrant initと空撃ちして手で書き換えてもよい。後述。
package.boxはローカルに置いてあるので、場所の指定は「file://」に続けてパスを書く。
windowsの場合は「/C:/path/to/package.box」のように書く。
結果、「file:///C:/….」となる。
スラッシュが多くて不安になるけど、これでよい。
なお、windowsっぽく円マークあるいはバックスラッシュを使ってしまうとエスケープされてしまい、vagrantがpackage.boxを見つけられない。注意。
C:\Users\nobwak\vagrant>vagrant init centosTest file:///c:/Users/doe/vagrant/package.
box
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
C:\Users\nobwak\vagrant>
Vagrantfileが以下のようになっていること。
vagrant initを空撃ちした場合には、以下の二行を加えること。
config.vm.box = "centosTest"
config.vm.box_url = "file:///c:/Users/nobwak/vagrant/package.box"
あとはvagrant upでよい。
C:\Users\nobwak\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'centos64' could not be found. Attempting to find and install..
<中略>
==> default: Booting VM...
<後略>
別の方法:box listに登録する。
package.boxをvagrantのbox listに登録しておけば、いちいちpackage.boxの場所を指定しなくてもいいようになる。
C:\Users\doe\vagrant>vagrant box add centosSkel package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centosSkel' (v0) for provider:
box: Unpacking necessary files from: file://C:/Users/nobwak/vagrant/package.box
box: Progress: 100% (Rate: 9737k/s, Estimated time remaining: --:--:--)
==> box: Successfully added box 'centosSkel' (v0) for 'virtualbox'!
あとは定石で。
C:\Users\nobwak\vagrant>vagrant init centosSkel
<略>
C:\Users\nobwak\vagrant>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centosSkel'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: vagrant_default_1442498300953_28586
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...```