前の記事「Vagrant v2 プロビジョニングの使い方、Chef SofoプロビジョナーでApacheをインストール」では、公開されているUbuntu 14.04のboxをローカル環境に追加(add)したものからプロビジョニングで必要な環境をセットアップしましたが、インストールするパッケージが多くプロビジョニングが必要な場合はboxに固めてそれを配布した方が効率が良い場合もあります。
例えば、ソースインストールする必要があるパッケージがある場合コンパイルに時間がかかります。そういった場合には便利です。

Vagrantの公式ドキュメントにでは、「Boxes – Vagrant Documentation」にまとまっています。

box コマンドおさらい

boxの管理はvagrant boxコマンドを利用します。
よく使うboxコマンドについてまとめておきます。

box add

Vagrantをインストールして、おそらく最初に実行するコマンドです。
boxをネットワークからダウンロードしてローカルのVagrant環境に登録します。

 $ vagrant box add ubuntu/trusty64 
==> box: Loading metadata for box 'ubuntu/trusty64'
    box: URL: https://vagrantcloud.com/ubuntu/trusty64
==> box: Adding box 'ubuntu/trusty64' (v14.04) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/1/providers/virtualbox.box
==> box: Successfully added box 'ubuntu/trusty64' (v14.04) for 'virtualbox'!

VagrantのサイトDiscover Featured Vagrant Boxesで公開されているboxは、boxを名前で指定できます。
A list of base boxes for Vagrant – Vagrantbox.esなどで公開されているboxを追加する場合は以下のように名前に続けてboxのURLを指定します。

$ vagrant box add opscode/centos-7.0 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box
==> box: Adding box 'opscode/centos-7.0' (v0) for provider: 
    box: Downloading: http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.0_chef-provisionerless.box
==> box: Box download is resuming from prior download progress
==> box: Successfully added box 'opscode/centos-7.0' (v0) for 'virtualbox'!

box list

ローカル環境にインストール済みのboxの一覧を表示します。

$ vagrant box list
CentOS6.5_64              (virtualbox, 0)
ubuntu/trusty64           (virtualbox, 14.04)

box remove

要らなくなったboxを削除します。

$ vagrant box remove ubuntu/trusty64 
Removing box 'ubuntu/trusty64' (v14.04) with provider 'virtualbox'...

基本的なコマンドは以上です。
公式サイトのリファレンスはこちら: vagrant box – Command-Line Interface – Vagrant Documentation

既存環境をコピーして新しいboxファイルを作成する

パッケージのインストールなど変更したboxをベースに新しいboxを作成するにはpackageコマンドを利用します。
packageコマンドはVagrantfileを含むプロジェクトのルートディレクトリで実行します。

$ vagrant package

boxファイル「package.box」ファイルが作成されます。
vagrant addで作成したboxファイルを登録しておきます。

$ vagrant box add --name lampstack-trusty_tahr ./package.box
$ vagrant box list
CentOS6.5_64              (virtualbox, 0)
lampstack-trusty_tahr     (virtualbox, 0)
ubuntu/trusty64           (virtualbox, 14.04)