VagrantでVM間でboxを共有してディスクスペースを節約する
動機
Vagrantの使い方を勘違いしていたため、自作のboxでVMをたてるごとに毎回「vagrant box add」して「1VM=1BOX」でVagrantを利用していたのですがさすがにboxのディスクスペースが馬鹿にならなくなってきたので、Vagrantを理解し直してきちんとboxをベースとして使い回すようにします。
Vagrantfileの書き方
普通にconfig.vm.box
で同じbox名を指定すればOKです。VirtualBox上のVM名はVagrantfileが置いてあるディレクトリ名がベースになるので、同じboxでも異なる名前でVMが立ち上がります。
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "centos67"
config.vm.provider :virtualbox do |vb|
(中略)
end
end
不要なboxデータの削除
不要なboxはコマンドで削除します。
$ vagrant box list
(box名を確認します)
$ vagrant box remove (box名)
ただし、削除がうまくいかなくてデータが残ったりすることがあります。その場合は以下の場所のデータを削除すればOKです。
- Windows
- %USERPROFILE%\.vagrant.d\boxes
- Mac/Linux
- ${HOME}/.vagrant.d/boxes