概要
VagrantのBoxを最新版にアップデートするコマンドでvagrant box update
というものがあります。
このコマンドの存在は知っていたのですが、何もバージョニングしていない自作のBoxに対して
どうやってアップデートするんだろうと謎だったのですが、その方法が分かりましたのでそのメモです。
大まかな流れ
- バージョン番号とboxファイルの保存場所を記述したjsonファイルを用意
- jsonファイルを
vagrant box add
で読み込み - boxを最新版に更新
- jsonファイル内のバージョン番号を更新
vagrant box update
で最新版へ更新
セットアップ
jsonファイルを作成
{ "description": "CentOS6.5 x86_64", "short_description": "CentOS6.5", "name": "centos6.5", "versions": [{ "version": "0.0.1", "status": "active", "description_html": "<p>CentOS6.5 x86_64</p>", "description_markdown": "CentOS6.5 x86_64", "providers": [{ "name": "virtualbox", "url": "http:\/\/example.com/vagrant/centos/centos-6.5.box" }] }] }
name | boxの名前を記述 |
---|---|
version | 0.0.1の形式で記述 |
url | boxファイルの保存場所を指定 |
自作boxをadd
これまではboxファイルを直接addしていましたが、先程作成したjsonファイルをaddします。
vagrant box add http://example.com/vagrant/centos/centos-6.5.json
vagrant box list
で確認すると
centos6.5 (virtualbox, 0.0.1)
となっています。
boxを更新
boxファイルを最新版へ更新します。
その後、jsonファイルもバージョン番号を0.0.1
から0.0.2
へ更新します。
vagrant box update
いよいよvagrant box update
でboxファイルを更新してみます。
vagrant box update --box centos6.5
表示例
$ vagrant box update --box centos6.5 Checking for updates to 'centos6.5' Latest installed version: 0.0.1 Version constraints: > 0.0.1 Provider: virtualbox Updating 'centos6.5' with provider 'virtualbox' from version '0.0.1' to '0.0.2'... Loading metadata for box 'http://example.com/vagrant/centos/centos-6.5.json' Adding box 'centos6.5' (v0.0.2) for provider: virtualbox Downloading: http://example.com/vagrant/centos/centos-6.5.box Successfully added box 'centos6.5' (v0.0.2) for 'virtualbox'! $
0.0.1
から0.0.2
へバージョンアップされた旨が表示されます。
vagrant box list
で確認すると
centos6.5 (virtualbox, 0.0.2)
と更新されていることが確認出来ます。
vagrant remove
0.0.1
のboxは残ったままになります。
boxを削除する場合はバージョン指定で削除を行う必要があります。
vagrant box remove centos6.5 --box-version 0.0.1