Vagrant コマンドラインインターフェース BOX

#BOX

##command: vagrant box
boxを扱うためのコマンド。
サブコマンドには以下がある。

1.[add](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#1box-add)
2.[list](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#2box-list)
3.[outdated](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#3box-outdated)
4.[remove](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#4box-remove)
5.[repackage](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#5box-repackage)
6.[update](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#6box-update)

###1.BOX ADD

書式：

>vagrant box add ${ADDRESS}

Vagrantに\${ADDRESS}で指定されたboxを追加する。${ADDRESS}は３つのうちの何れか。

- 一般に公開されたVagrantのイメージ名。例えば「[hashicorp/precise64](https://atlas.hashicorp.com/boxes/search)」
- ファイルのパスやカタログの中のboxへのHTTP URL。HTTPでは基本的な認証はサポートされ、http_proxyの環境変数も効く。HTTPSもサポートされている。
- boxファイルへの直接のパス。--nameを付ける。バージョンやアップデートは効かない。

<font color="#ff0000">ダウンロード中にエラーが発生した場合やCtrl+Cでキャンセルされた場合、Vagrantは次回起動の際にダウンロードを再開する。但し、初回ダウンロードから<b>6時間以上経過すると再開しない</b>。</font>

####オプション

<dl>
<dt>--box-version ${VALUE}</dt>
<dd>追加するboxのバージョンを指定。デフォルトだと最新のバージョンとなる。
「1.2.3」のような具体的なバージョンもしくは「>= 1.0, ＜ 2.0」のような条件指定でもOK。
</dd>
<dt>--cacert ${CERTFILE}</dt>
<dd>ピア証明用CAの認証。リモート側が標準のルートCAを使わない場合に使用。</dd>
<dt>--capath ${CERTDIR}</dt>
<dd>ピア証明用CAの認証DIR。リモート側が標準のルートCAを使わない場合に使用。</dd>
<dt>--cert ${CERTFILE}</dt>
<dd>boxダウンロード時に使うクライアント証明書（必要時のみ）</dd>
<dt>--clean</dt>
<dd>同じURLで以前のダウンロードで作られたテンポラリのファイルを削除する。コンテンツが変わった等でVagrantに前回のダウンロードを再開して欲しくないときに使う。
</dd>
<dt>--force</dt>
<dd>ダウンロードされたboxで同名の既存のboxを上書く。</dd>
<dt>--insecure</dt>
<dd>URLがHTTPSの時にSSL認証をチェックしない。</dd>
<dt>--provider ${PROVIDER}</dt>
<dd>追加されるboxが${PROVIDER}で指定されたものかをチェックする。デフォルトでは自動的に適切なプロバイダを検知する。</dd>
</dl>

####ダイレクトアクセス時のオプション
カタログを使わず直接boxファイルを指定した時のオプション。

<dl>
<dt>--checksum ${VALUE}</dt>
<dd>boxファイルのchecksumがダウンロードされる。
Vagrantは実際にダウンロードされたファイルとchecksumとを比較し、マッチしなければエラーを表示。
boxファイルは大きいのでこのオプションは特に推奨される。checksum指定時は「--checksum-type」の指定が必須。
カタログからダウンロード時はchecksumは含まれている。
</dd>
<dt>--checksum-type ${TYPE}</dt>
<dd>「 --checksum」指定時のchecksumの種類。現在「md5」「sha1」「sha256」がサポートされている。</dd>
<dt>--name ${VALUE}</dt>
<dd>boxの論理名。Vagrantfileの「config.vm.box」に入る値を指定する。カタログから追加時は既にカタログに入っている為
指定する必要がない。
</dd>
</dl>

###2.BOX LIST

書式：

>vagrant box list

Vagrantにインストールされたboxを一覧表示する。


###3.BOX OUTDATED

書式：

>vagrant box outdated

Vagrantにあるboxが古くないかを確認。
「<b>--global</b>」オプションを付加することでVagrantにインストールされた全てのboxに対し、アップデートがないかをチェックする。
boxにアップデートがないかをチェックする際は、それに関連するメタデータをリフレッシュする必要がある。
一般的にインターネット接続が必要である。

####オプション

<dl>
<dt>--global</dt>
<dd>現在のVagrant環境にあるboxだけでなく、インストールされた全boxのアップデート有無をチェックする。
</dd>
</dl>

###4.BOX REMOVE

書式：

>vagrant box remove ${NAME}

${NAME}に指定されたboxをVagrantから削除する。

対象のboxが複数のプロバイダを持つ場合、「<b>--provider</b>」オプションで該当するプロバイダを指定しないといけない。
また複数のバージョンのboxがある場合は、「<b>--box-version</b>」で該当するバージョンを指定するか、「<b>--all</b>」により全てのバージョンを削除することが可能。

####オプション

<dl>
<dt>--box-version ${VALUE}</dt>
<dd>${VALUE}でバージョン指定したboxを削除。詳細は、<a href="http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#1box-add">BOX ADD</a>の同名のオプションの説明に記載。
</dd>
<dt>--all</dt>
<dd>${NAME}で指定したboxの全てのバージョンを削除。
</dd>
<dt>--force</dt>
<dd>アクティブなVagrant環境にて使用中のboxを強制的に削除。
</dd>
<dt>--provider ${VALUE}</dt>
<dd>${VALUE}で指定したプロバイダのboxを削除。複数のプロバイダを持つbox削除時に必要となる。プロバイダが１つの場合は自動的にVagrantがそのプロバイダのboxを削除する。
</dd>
</dl>

###5.BOX REPACKAGE

書式：

>vagrant box repackage ${NAME} ${PROVIDER} ${VERSION}

指定されたboxを再パッケージ化し、再配布可能なようにカレントディレクトリに配置する。${NAME}（名前）、${PROVIDER}（プロバイダ）、${VERSION}（バージョン）情報は「<b>[vagrant box list](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#2box-list)</b>」で取得可能。

box追加の際、Vagrantがパッケージを展開し、内部に保存する。元の\*.boxファイルは保存されない。このコマンドはインストールされたVagrant boxから\*.boxファイルを再利用する際に便利。


###6.BOX UPDATE

書式：

>vagrant box update

現在のVagrant環境にあるboxのアップデートが利用可能な場合にアップデートする。「<b>--box</b>」オプションで（アクティブなVagrant環境外の）boxを指定した場合、そのboxを更新する。

実行中のVagrantマシンにあるboxのアップデートはできない。boxの中の変更を反映するには、Vagrantを再起動する必要がある。

アップデート有無の確認のみを行う場合、「<b>[vagrant box outdated</b>](http://qiita.com/CsFactoryitter/items/d4d16f6fcd328c97ebc8#3box-outdated)」を使用すること。


####オプション

<dl>
<dt>--box ${VALUE}</dt>
<dd>指定したboxをアップデート。このオプションがない場合、VagrantはアクティブなVagrantのboxを更新する。
</dd>
<dt>--provider ${VALUE}</dt>
<dd>「<b>--box</b>」と同時に使用する際、プロバイダ指定でboxを更新する。複数のプロバイダを持つbox更新時に必要となる。「<b>--box</b>」オプションがない場合、このコマンドは効果がない。
</dd>