前の記事「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環境に登録します。
[bash gutter=”false”]
$ 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’!
[/bash]
VagrantのサイトDiscover Featured Vagrant Boxesで公開されているboxは、boxを名前で指定できます。
A list of base boxes for Vagrant – Vagrantbox.esなどで公開されているboxを追加する場合は以下のように名前に続けてboxのURLを指定します。
[bash gutter=”false”]
$ 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’!
[/bash]
box list
ローカル環境にインストール済みのboxの一覧を表示します。
[bash gutter=”false”]
$ vagrant box list
CentOS6.5_64 (virtualbox, 0)
ubuntu/trusty64 (virtualbox, 14.04)
[/bash]
box remove
要らなくなったboxを削除します。
[bash gutter=”false”]
$ vagrant box remove ubuntu/trusty64
Removing box ‘ubuntu/trusty64’ (v14.04) with provider ‘virtualbox’…
[/bash]
基本的なコマンドは以上です。
公式サイトのリファレンスはこちら: vagrant box – Command-Line Interface – Vagrant Documentation
既存環境をコピーして新しいboxファイルを作成する
パッケージのインストールなど変更したboxをベースに新しいboxを作成するにはpackageコマンドを利用します。
packageコマンドはVagrantfileを含むプロジェクトのルートディレクトリで実行します。
[bash]
$ vagrant package
[/bash]
boxファイル「package.box」ファイルが作成されます。
vagrant addで作成したboxファイルを登録しておきます。
[bash gutter=”false”]
$ 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)
[/bash]