[Vagrant & VirtualBox] vagrant box の update と 不要な box の削除
最新版への update と、使われていない box の削除方法。
以下の環境で確認しています。
% vagrant -v
Vagrant 2.0.1
Contents
vagrant box を update したい
状況
ubuntu/trusty64
の最新版がありそう。- 古いバージョンは消したい。
% vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20160323.0.0)
ubuntu/trusty64 (virtualbox, 20160621.0.0)
ubuntu/trusty64 (virtualbox, 20160627.0.0)
vccw-team/xenial64 (virtualbox, 20161209)
update
vagrant box update --box <box_name>
を実行します。
% vagrant box update --box ubuntu/trusty64
Checking for updates to 'ubuntu/trusty64'
Latest installed version: 20160627.0.0
Version constraints: > 20160627.0.0
Provider: virtualbox
Updating 'ubuntu/trusty64' with provider 'virtualbox' from version
'20160627.0.0' to '20171115.1.2'...
Loading metadata for box 'https://atlas.hashicorp.com/ubuntu/trusty64'
Adding box 'ubuntu/trusty64' (v20171115.1.2) for provider: virtualbox
Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20171115.1.2/providers/virtualbox.box
Successfully added box 'ubuntu/trusty64' (v20171115.1.2) for 'virtualbox'!
このようにアップデートされています。
% vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20160323.0.0)
ubuntu/trusty64 (virtualbox, 20160621.0.0)
ubuntu/trusty64 (virtualbox, 20160627.0.0)
ubuntu/trusty64 (virtualbox, 20171115.1.2)
vccw-team/xenial64 (virtualbox, 20161209)
prune
不要になった box を削除します。
vagrant box prune
を実行します。
-n
で dry-run します。
% vagrant box prune
The following boxes will be kept...
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20171115.1.2)
vccw-team/xenial64 (virtualbox, 20161209)
Checking for older boxes...
Removing box 'ubuntu/trusty64' (v20160323.0.0) with provider 'virtualbox'...
Removing box 'ubuntu/trusty64' (v20160621.0.0) with provider 'virtualbox'...
Removing box 'ubuntu/trusty64' (v20160627.0.0) with provider 'virtualbox'...
古い box を削除して良いかを調べる
状況
vccw-team/xenial64
の古いバージョンは不要ではないか?
% vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20171115.1.2)
vccw-team/xenial64 (virtualbox, 20161209)
vccw-team/xenial64 (virtualbox, 20170902)
prune コマンド実行時に自動チェックしてくれる
vagrant box prune
を実行します。
削除対象の box が使われていると警告を表示してくれます。
% vagrant box prune
The following boxes will be kept...
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20171115.1.2)
vccw-team/xenial64 (virtualbox, 20170902)
Checking for older boxes...
Box 'vccw-team/xenial64' (v20161209) with provider 'virtualbox' appears
to still be in use by at least one Vagrant environment. Removing
the box could corrupt the environment. We recommend destroying
these environments first:
foo.dev (ID: xxxxx)
deadwood2.dev (ID: xxxxx)
Are you sure you want to remove this box? [y/N] n
ひとまず該当プロジェクトを確認した方が良さそうです。
そもそも不要な box はないのかを調べる
状況
centos64
は、そもそも不要ではないか?
% vagrant box list
bento/centos-6.7 (virtualbox, 2.2.7)
centos64 (virtualbox, 0)
miya0001/vccw (virtualbox, 2.19.0)
ubuntu/trusty64 (virtualbox, 20171115.1.2)
vccw-team/xenial64 (virtualbox, 20161209)
vccw-team/xenial64 (virtualbox, 20170902)
find で設定を探す
Vagrantfile 内の config.vm.box
に設定が書かれているはず。
これを find
で検索します。
% find ./projects_dir -name 'Vagrantfile' | xargs grep centos64
./projects_dir/VMs/Dotinstall/Vagrantfile: config.vm.box = "centos64"
./projects_dir/VMs/Dotinstall/Vagrantfile: # the file centos64.pp in the manifests_path directory.
1ファイル見つかったようです。