【Vagrantドキュメント意訳】05.コマンドライン・インタフェース

# はじめに

本文章は、VagrantのヘルプコマンドおよびVagrant公式サイト内のドキュメント内の[COMMAND-LINE-INTERFACE](https://www.vagrantup.com/docs/cli/)に記載されている内容を意訳に近い形で日本語化したものである。
誤訳が含まれている可能性が十分にあることを踏まえて、参考いただきたい。

# コマンドライン・インタフェース

Vagrantのやりとりのほとんどはコマンドライン・インタフェースを通じて行われ、それはVagrantとともに自動的にインストールされる。`vagrant`コマンドは、`vagrant up`や`vagrant destroy`などの多くのサブコマンドを持つ。

もし、`vagrant`だけを実行した場合、ヘルプが使用可能なすべてのサブコマンドを表示する。これに加えて、`-h`フラグとともにいずれかのVagrantコマンドを実行することで、そのコマンドに関するヘルプを出力させることができる。例えば`vagrant init -h`を試してみればよい。ヘルプは、コマンドが何ができるかの要約を一文で示すと同時に、コマンドが受け付けるすべてのフラグを一覧表示する。

詳細なドキュメントや様々なVagrantコマンドの使い方は、このサイトの左にあるナビゲーション・エリアのサブ・セクションに割り当てられた部分を読むことができる。

グローバルな方法でVagrantを設定したり制御するために使用する環境変数に関する[ドキュメント](https://www.vagrantup.com/docs/other/environmental-variables.html)に助言を求めることもできるだろう。

# box

**コマンド：**`vagrant box`

これは[Box](https://www.vagrantup.com/docs/boxes.html)を管理(add、removeなど)するためのコマンドである。

* [`add`](https://www.vagrantup.com/docs/cli/box.html#add)
* [`list`](https://www.vagrantup.com/docs/cli/box.html#list)
* [`outdated`](https://www.vagrantup.com/docs/cli/box.html#outdated)
* [`remove`](https://www.vagrantup.com/docs/cli/box.html#remove)
* [`repackage`](https://www.vagrantup.com/docs/cli/box.html#repackage)
* [`update`](https://www.vagrantup.com/docs/cli/box.html#update)

## box add

**コマンド：**`vagrant box add ADDRESS`

与えられたADDRESSでBoxをVagrantに追加する。ADDRESSは次の3つうちの一つで指定される。

* "hashicorp/precise64"のような、[使用可能なVagrantイメージの公開カタログ](https://atlas.hashicorp.com/boxes/search)にある略称
* [カタログ](https://atlas.hashicorp.com/boxes/search)にあるBoxへのファイル・パスやHTTPのURL。HTTPの場合、基本認証がサポートされ、`http_proxy`環境変数が尊重される。
* Boxファイルへの直接的なURL。この場合、(以下のように)[`--name`](https://www.vagrantup.com/docs/cli/box.html#_name)フラグを指定する必要があるが、バージョン管理やアップデートは動作しない。

ダウンロード中にエラーが発生したり、Ctrl-Cでダウンロードを中止した場合、Vagrantは次に要求された際にダウンロードの再開を試みる。Vagrantは、最初のダウンロード後の24時間の間のみダウンロードの再開を試みる。

### オプション

* [`--box-version VALUE`](https://www.vagrantup.com/docs/cli/box.html#_box_version_VALUE) - 追加したいBoxのバージョン。デフォルトでは、最新のバージョンがつかされる。この値は、"1.2.3"などのような明確なバージョン番号かバージョンの制約条件である。バージョンの制約は">= 1.0, < 2.0"のようになる。
* [`--cacert CERTFILE`](https://www.vagrantup.com/docs/cli/box.html#_cacert_CERTFILE) - ピア認証する為に使用されるCAのための証明書。これはリモート端末が標準ルートCAを使用していない場合に使用される。
* [`--capath CERTDIR`](https://www.vagrantup.com/docs/cli/box.html#_capath_CERTDIR) - ピア認証する為に使用されるCAのための証明書ディレクトリ。これはリモート端末が標準ルートCAを使用していない場合に使用される。
* [`--cert CERTFILE`](https://www.vagrantup.com/docs/cli/box.html#_cert_CERTFILE) - Boxをダウンロードする際に、必要に応じて使用されるクライアント証明書。
* [`--clean`](https://www.vagrantup.com/docs/cli/box.html#_clean) - 与えられた場合、Vagrantは同じURLから以前にダウンロードされた古い作業用ファイルを削除する。これは、内容に変更があったなど、Vagrantに前回の時点からダウンロードを再開させたくない場合に有用である。
* [`--force`](https://www.vagrantup.com/docs/cli/box.html#_force) - 指定された場合、Boxをダウンロードし、同じ名前の存在するBoxを上書きする。
* [`--insecure`](https://www.vagrantup.com/docs/cli/box.html#_insecure) - 指定された場合、URLがHTTPSのURLである場合でもSSL証明書は検証されない。
* [`--provider PROVIDER`](https://www.vagrantup.com/docs/cli/box.html#_provider_PROVIDER) - 指定された場合、Vagrantは追加したBoxを与えられたプロバイダに対して検証する。デフォルトでは、Vagrantは自動的に使用できる適切なプロバイダを検出する。

### 直接Boxファイルを指定した場合のオプション

以下のオプションは、Boxファイルを直接指定(カタログを使用せずに)した際にのみ適応できるオプションである。

* [`--checksum VALUE`](https://www.vagrantup.com/docs/cli/box.html#_checksum_VALUE) - ダウンロードしたBoxに対するチェックサム。指定した場合、Vagrantは正しくダウンロードできたかこのチェックサムを比較し、チェックサムが一致しなかった場合はエラーとなる。これはBoxのファイルが巨大な場合、強く推奨される。これが指定された場合、`--checksum-type`もともに指定する必要がある。カタログからダウンロードした場合、チェックサムはカタログのエントリに含まれている。
* [`--checksum-tupe TYPE`](https://www.vagrantup.com/docs/cli/box.html#_checksum_type_TYPE) - `--checksum`が指定された場合の、チェックサムの種類。現在"md5"、"sha1"と"sha256"の値がサポートされている。
* [`--name VALEU`](https://www.vagrantup.com/docs/cli/box.html#_name_VALUE) - Boxに対する論理的な名前。これはVagrantfile内の`config.vm.box`に指定することのできる値である。カタログからBoxを追加したとき、名前はカタログに含まれており、指定する必要はない。

> **バージョン付きのBoxやHashiCorpのAtlasから取得したBoxのチェックサム：**HashiCorpのAtlasから取得したBoxに対して、チェックサムはBoxのメタデータに組み込まれている。メタデータ自身はTLSを介して提供され、そのフォーマットは検証済みである。

## box list

**コマンド：**`vagrant box list`

このコマンドはVagrantにインストールされたすべてのBoxを一覧表示する。

## box outdated

**コマンド：**`vagrant box outdated`

このコマンドは現在のVagrant環境ないで使用しているBoxが古いかどうかを教える。もし`--global`フラグが指定された場合、すべてのインストールされたBoxのアップデート状況が確認される。

アップデートの確認は、そのBoxに関連するメタデータの更新作業も含む。これは通常インターネット接続を必要とする。

### オプション

* [`--global`](https://www.vagrantup.com/docs/cli/box.html#_global) - 現在のVagrant環境に対するBoxのみでなく、インストールされたすべてのBoxに対するアップデートを確認する。

## box remove

**コマンド：**`vagrant box remove NAME`

このコマンドは与えられた名前に一致するBoxをVagrantから除去する。

もし、Boxがマルチ・プロバイダを持っているならば、`--provider`フラグで正確にプロバイダを指定する必要がある。

### オプション

* [`--box-version VALUE`](https://www.vagrantup.com/docs/cli/box.html#_box_version_VALUE) - 除去するBoxのバージョンによる制限。より詳細な譲歩会うについては`box add`にあるこのフラグの説明を参照のこと。
* [`--all`](https://www.vagrantup.com/docs/cli/box.html#_all) - すべてのバージョンのBoxを除去する。
* [`--force`](https://www.vagrantup.com/docs/cli/box.html#_force) - 稼働中のVagrant環境がそれを使用していた場合でも、強制的に除去する。
* [`--provider VALUE`](https://www.vagrantup.com/docs/cli/box.html#_provider_VALUE) - 与えられた名前でプロバイダを指定してBoxを除去する。これは、マルチ・プロバイダであるBoxの場合にのみに要求される。シングル・プロバイダの場合、Vagrantはそれを除去する。

## box repackage

**コマンド：**`vagrant box repackage NAME PROVIDER VERSION`

このコマンドは、再配布できるようにBoxを再パッケージし、カレント・ディレクトリに配置する。BoxのNAME、PROVIDER、および、VERSIONは`vagrant box list`で得ることのできる。

Boxを追加した際、Vagrantはそれをアン・パッケージし、内部に格納する。オリジナルの`*.box`ファイルは保持されない。このコマンドは、インストールされたVagrantのBoxから`*.box`ファイルを復元するのに有用である。

## box update

**コマンド：**`vagrant box update`

このコマンドは、アップデート可能であるならば、現在のVagrant環境に対するBoxをアップデートする。また、`--box`フラグを指定することで、(稼働中のVagrant環境以外の)特定のBoxをアップデートすることもできる。

Boxのアップデートはすでに稼働しているVagrantマシンに対しては行えない点に中止すること。Box内の変更を反映するためには、そのVagrantマシンをdestroyしてから起動する必要がある。

もし、アップデートが入手可能かをチェックしたいだけであれば、`vagrant box outdated`コマンドを使用する。

### オプション

* [`--box VALUE`](https://www.vagrantup.com/docs/cli/box.html#_box_VALUE) - アップデートする特定のBoxの名前。もしこのフラグが指定されていなければ、Vagrantは稼働しているVagrant環境に対するBoxをアップデートする。
* [`--provider VALUE`](https://www.vagrantup.com/docs/cli/box.html#_provider_VALUE) - `--box`がある場合、これはアップデートする特定のプロバイダのBoxがなんであるかを逝去する。これはマルチ・プロバイダでない場合は、指定する必要がない。`--box`フラグがない場合、これは何の効果も発しない。

# connect

**コマンド：**`vagrant connect NAME`

connectコマンドは共有環境へアクセス可能とすることで[shareコマンド](https://www.vagrantup.com/docs/cli/share.html)を補足する。Vagrantの共有の詳細のすべてについては[Vagrant共有のセクション](https://www.vagrantup.com/docs/share/)で学ぶことができる。

このコマンドで使用可能なコマンド・ラインのフラグに関するリファレンスを以下に示す。

## オプション

* [`--disable-static-ip`](https://www.vagrantup.com/docs/cli/connect.html#_disable_static_ip) - connectコマンドは、アクセスすることができる静的IPアドレスを生成するために小さな仮想マシンを起動させるわけではない。このフラグが設定されたとき、接続にアクセスするための唯一の道は、出力されるSOCKSプロキシ・アドレスを使用することである。
* [`--static-ip IP`](https://www.vagrantup.com/docs/cli/connect.html#_static_ip_IP) - 仮想マシンに対して使用するための静的IPアドレスがなんであるかをconnectに伝える。デフォルトでは、Vagrantのconnectは、172.16.0.0/16アドレス空間内にあるIPアドレスを使用する。
* [`--ssh`](https://www.vagrantup.com/docs/cli/connect.html#_ssh) - `vagrant share --ssh`で共有された環境へSSHを介して接続する。

# destroy

**コマンド：**`vagrant destroy [NAME|ID]`

このコマンドはVagrantの管理している稼働しているマシンを停止し、マシンの生成プロセスの間に生成されたすべてのリソースを破壊する。このコマンドを実行した後、そのコンピュータは、まるで一度もゲストマシンを生成していない可能ような、クリーンな状態になる。

起動しているマシンを停止する。Vagrantはマシン生成処理において生成されたすべてのリソースを管理し、破棄する。このコマンドを実行したのち、コンピュータは、ゲストマシンを生成する以前のクリーンな状態になる。

Linuxベースのゲストに対して、Vagrantはマシンを停止するためにシャットダウンコマンドを即座に使用する。オペレーティングシステムの様々な性質のために、シャットダウンコマンドはゲストマシンの\$PATHの中で異なる場所に存在しているしれない。\$PATHにシャットダウンコマンドが含まれるディレクトリが適切に存在するかはゲストマシンの責任である。

## オプション

* [`-f`](https://www.vagrantup.com/docs/cli/destroy.html#_f) または --force - destroy の前に確認のために問い合わせをしない。

> destroyコマンドはvagrant upの間はインストールされているコンピュータ上からはBoxを除去することはない。
そのため、vagrant destroyを実行しても、システムにインストールされたBoxはハードディスク上にまだ存在している。vagrant upコマンドを実行する前の状態にコンピュータが戻るには、vagrant box removeコマンドを使用する必要がある。
より詳細な情報については、vagrant box removeコマンドを参照のこと。

# global status

**コマンド：**`vagrant global-status`

現在ログインしているユーザのシステム上のすべてのアクティブなVagrant環境の状態を出力する。

> **このコマンドは積極的にマシンの状態を検証しない。**その代わりにキャッシュに基づきます。このため(マシンが実際には動いていないが動いていると判断するような)異常な結果を見ることが可能になる。たとえば、コンピュータを再起動した場合、Vagrantはそれを知る手段がない。無効なエントリを取り除くには`--prune`フラグとともにglobal-statusを実行する。

`a1b2c3`のように表示される出力内のIDはシステム上のさまざまな場所からVagrantマシンを制御するために使用することができる。ターゲットマシンを引数に持つ、どんなコマンド(例えば`up`、`halt`、`destroy`など)でも、このIDを制御するために使用することができる。例)`vagrant destroy a1b2c3`

## オプション

* [`--prune`](https://www.vagrantup.com/docs/cli/global-status.html#_prune) - 一覧から無効なエントリを取り除く。これはシンプルなエントリ一覧を表示するよりも、より時間がかかります。

## 環境が表示されない

その環境が表示されない場合、`vagrant up`に続いて`vagrant destroy`を実行する必要があるかもしれない。

もし、Vagrantの直前のバージョンからアップグレードした直後である場合、現在の環境は、destroyしたのち再起動されるまでglobal-status内で表示されない。

# halt

**コマンド：**`vagrant halt [NAME|ID]`

このコマンドはVagrantが管理している稼働マシンを停止する。

Vagrantは初めにゲストOSのシャットダウンメカニズムを実行することで、マシンをうまく停止しようと試みる。これが失敗した場合、または、`--force`フラグが指定された場合、Vagrantは効果的に、ただマシンの電源をOFFにする。

Linuxベースのゲストに対して、Vagrantはマシンを停止するために`shutdown`コマンドを即座に使用する。オペレーティングシステムの様々な性質のために、`shutdown`コマンドはゲストマシンの`$PATH`の中で異なる場所に存在しているしれない。`$PATH`に`shutdown`コマンドが含まれるディレクトリが適切に存在するかはゲストマシンの責任である。

```bash
vagrant halt [options] [name]
```

## オプション

* [`-f`](https://www.vagrantup.com/docs/cli/halt.html#_f) または --force - うまくマシンを停止することを試みない。これはゲストマシンの電源を直接切るような効果である。

# init

**コマンド：**`vagrant init [NAME [URL]]`

Vagrant環境が存在しない場合、初期の[Vagrantfile](https://www.vagrantup.com/docs/vagrantfile/)を生成することによって、カレントディレクトリをVagrant環境を生成する。

第一引数は、生成されたVagrantfile内の`config.vm.box`に対して設定される。
第二引数は、生成されたVagrantfile内の`config.vm.box_url`に対して設定される。

## オプション

* [`--box-version`](https://www.vagrantup.com/docs/cli/init.html#_box_version) - (オプション)`Vagrantfile`に追加するBoxのバージョンやBoxのバージョン制約。
* [`--force`](https://www.vagrantup.com/docs/cli/init.html#_force) - 指定された場合、このコマンドは存在しているいかなる`Vagrantfile`も上書きする。
* [`--minimal`](https://www.vagrantup.com/docs/cli/init.html#_minimal) - 指定された場合、最小のVagrantfileが生成される。このVagrantfileは通常のVagrantfileが持っている、説明のためのコメントを含まないものである。
* [`--output FILE`](https://www.vagrantup.com/docs/cli/init.html#_output_FILE) -
 指定されたファイルに対してVagrantfileが出力される。これが"-"の場合、Vagrantfileは標準出力に送られる。

## 例

ベースとなるVagrantfilの生成。

```bash
$ vagrant init hashicorp/precise64
```

(コメントも補助もない)最小限のVagrantfileを生成する。

```bash
$ vagrant init -m hashicorp/precise64
```

カレントパスにあるものを上書きして、新しいVagrantfileを生成する。

```bash
$ vagrant init -f hashicorp/precise64
```

指定したBoxのURLから、指定されたBoxでVagrantfileを生成する。

```bash
$ vagrant init my-company-box https://boxes.company.com/my-company.box
```

Boxに対するバージョン制約を科して、Vagrantfileを生成する。

```bash
$ vagrant init --box-version '> 0.1.5' hashicorp/precise64
```

# login

**コマンド：**`vagrant login`

loginコマンドは[HashiCorpのAtlasサーバ](https://www.vagrantup.com/docs/other/atlas.html)との認証のために使用される。ログインは、保護されたBoxへのアクセスや、[Vagrant共有](https://www.vagrantup.com/docs/share/)を使用する場合のみに必要である。

**ログインはVagrantを使用するためには要求されない。**Vagrantの大多数はログインを要求しない。保護されたBoxや[Vagrant共有](https://www.vagrantup.com/docs/share/)などの特定の機能のみがログインを要求する。

このコマンドに対して使用可能なコマンドライン・フラグのリファレンスを以下に示す。

## オプション

* [`--check`](https://www.vagrantup.com/docs/cli/login.html#_check) - ログインしているかどうかを確認する。ログインしているかどうかを出力するのに加え、ログインしてた場合、ステータスを0で終了し、ログインしていない場合、ステータスを1で返す。
* [`--logout`](https://www.vagrantup.com/docs/cli/login.html#_logout) - ログインしていれば、ログアウトする。すでにログアウトしている場合、何もしない。すでにログアウトしていた場合でも、このコマンドはエラーとすることはない。
* [`--token`](https://www.vagrantup.com/docs/cli/login.html#_token) - Atlasログイン・トークンを与えられた文字列で手動で設定する。このトークンはAtlassアクセストークンとして有効なものとする。

## 例

ユーザ名とパスワードを使用して、Atlasに対するセキュリティ認証を行う。

```bash
$ vagrant login
# ...
Atlas username:
Atlas password:
```

カレント・ユーザが認証されているかを確認する

```bash
$ vagrant login --check
You are already logged in.
```

トークンを使用してAtlasとセキュリティ認証を行う

```bash
$ vagrant login --token ABCD1234
The token was successfully saved.
```

# package

**コマンド：**`vagrant package [NAME|ID]`

現在稼働しているVirtualBox環境を再利用可能なBoxへとパッケージ化する。 このコマンドは、それをサポートしているプロバイダであり、かつそのプロバイダの実装に基づいた他のプロバイダに対してのみ使用することができる。Vagrantの将来的なバージョンでは、他のプロバイダのためにパッケージ化されたBoxを指し示すことができるようになるだろう。それまでは手動にて行うことになる。

## オプション

* [`--base NAME`](https://www.vagrantup.com/docs/cli/package.html#_base_NAME) - Vagrantが管理しているVirtualBoxマシンをパッケージ化する代わりに、VirtualBoxが管理しているVirtualBoxマシンをパッケージ化する。NAMEはVirtualBoxのGUIから確認できるマシンのUUIDまたは名前とする必要がある。
* [`--output NAME`](https://www.vagrantup.com/docs/cli/package.html#_output_NAME) - `NAME`でパッケージ化した結果を保存する。デフォルトでは、`pakage.box`として保存される。
* [`--include x,y,z`](https://www.vagrantup.com/docs/cli/package.html#_include_x_y_z) - Boxとともにパッケージ化される追加ファイルを指定する。これらは、パッケージ化された追加のタスクを動作させるためのVagrantfile(後述する)によって使用することができる。
* [`--vagrantfile FILE`](https://www.vagrantup.com/docs/cli/package.html#_vagrantfile_FILE) - BoxとともにVagrantfileをパッケージ化する。出力されたBoxが使用された際、Vagrantfileのロード順の一部としてロードされる。

> **よくある誤解**としては`--vagrantfile`オプションがそのBoxで`vagrant init`が使用されたときに使われたVagrantfileをパッケージ化するということである。これはそれには該当しない。その代わりに、Boxが使用されたときに、Vagrantfileはロードされ、Vagrantの読み込み処理の一部として読み込まれる。より詳細な情報は[Vagrantfileのロード順](https://www.vagrantup.com/docs/vagrantfile/#load-order)を参照のこと。

# plugin

**コマンド：**`vagrant plugin`

プラグインを管理するために使用するコマンドである。

このコマンドの主な機能はサブコマンドによって拡張される。

* [`install`](https://www.vagrantup.com/docs/cli/plugin.html#install)
* [`license`](https://www.vagrantup.com/docs/cli/plugin.html#license)
* [`list`](https://www.vagrantup.com/docs/cli/plugin.html#list)
* [`uninstall`](https://www.vagrantup.com/docs/cli/plugin.html#uninstall)
* [`update`](https://www.vagrantup.com/docs/cli/plugin.html#update)

### plugin install

**コマンド：**`vagrant plugin install <NAME>...`

指定された名前やファイルパスでプラグインをインストールする。名前がファイルに対するパスでない場合、その後、リモートリポジトリ、通常[RubyGems](https://rubygems.org/)からインストールされる。すでにインストールされている場合、プラグインのアップデートも行うが、そのためには`vagrant plugin update`のコマンドも使用することができる。

```bash
# Installing a plugin from a known gem source
$ vagrant plugin install my-plugin

# Installing a plugin from a local file source
$ vagrant plugin install /path/to/my-plugin.gem
```

複数の名前が指定された場合、複数のプラグインがインストールされる。以下に示すフラグが指定された場合、その時のコマンドによってインストールされるプラグインのすべてにそのフラグが適応される。

プラグインがすでにインストールされていた場合、このコマンドは入手可能な最新のバージョンによって再インストールする。

このコマンドは以下のコマンドライン・フラグを受け付ける。

* [`--entry-point ENTRYPOINT`](https://www.vagrantup.com/docs/cli/plugin.html#_entry_point_ENTRYPOINT) - デフォルトでは、インストールされたプラグインは、プラグインとして同名の初期化ファイルをロードすることによって内部的にロードされる。多くの場合、これで問題ない。もし、インストールしたいプラグインは異なるエントリポイントを持たせたい場合、それを指定するとともにこのフラグを使用することができる。
* [`--plugin-clean-sources`](https://www.vagrantup.com/docs/cli/plugin.html#_plugin_clean_sources) - これまでに定義されたすべての取得元（ソース）を消去する。これは高度な機能である。RubyGems.orgにアクセスするのを防止するための企業ファイアウォールのための基本的な方法である。
* [`--plugin-source SOURCE`](https://www.vagrantup.com/docs/cli/plugin.html#_plugin_source_SOURCE) - プラグインを取得した取得元（ソース）を追加する。これは単一のインストールされたプラグインに対して影響するだけでなく、将来のすべてのプラグインにも同様である。これはVagrantが使用しているプラグインインストーラに基づいた制限である。
* [`--plugin-version VERSION`](https://www.vagrantup.com/docs/cli/plugin.html#_plugin_version_VERSION) -
特定のバージョンのプラグインをインストールする。デフォルトでは、このコマンドは最新のバージョンをインストールしようとする。このフラグを用いてバージョンを強制することができる。特定のバージョン、例えば"1.2.3"を設定したり、”> 1.0.2"のようにバージョンを強制して設定することができる。コンマ-分割方式によってより複雑な設定を行うこともできる。"> 1.0.2, < 1.1.0"(コマンドライン上ではクォートを忘れないこと)

### plugin license

**コマンド：**`vagrant plugin license <NAME> <LICENSE-FILE>`

[VMware Fusionプロバイダ](https://www.vagrantup.com/docs/vmware)のような、プロプライエタリなVagrantプラグインに対するライセンスをインストールする。

#### plugin list

**コマンド：**`vagrant plugin list`

インストールされたバージョンとともに、インストールされたプラグインの一覧を表示する。プラグインに対してバージョン強制されていた場合、強制された内容も一覧表示される。そのほかプラグイン特有の情報も表示される。

### plugin uninstall

**コマンド：**`vagrant plugin uninstall <NAME> [<NAME2> <NAME3> ...]`

NAMEで与えたプラグインをアンインストールする。 プラグインに依存していて、そのほかのプラグインが必要としていないと思われるものも合わせてアンインストールされる。

複数のプラグインが指定された場合、複数のプラグインがアンインストールされる。

### plugin update

**コマンド：**`vagrant plugin update [<NAME>]`

Vagrantとともにインストールされたプラグインをアップデートする。プラグインをインストールするときに特定のバージョンを強制した場合、 このコマンドは、その制約を優先する。強制したバージョンを変更したい場合、`vagrant plugin install`を用いてプラグインを再インストールする。

一つのnameが指定された場合、一つのプラグインだけがアップデートされる。インストールされていないプラグインが指定されて場合、このコマンドはインストールを行わない。

# port

**コマンド：**`vagrant port [NAME|ID]`

ホストマシンのポートに対してマッピングされたゲストマシンのポートのすべてを一覧表示する。

```bash
$ vagrant port
    22 (guest) => 2222 (host)
    80 (guest) => 8080 (host)
```

マルチ・マシンVagrantfile内では、マシン名を指定する。

```bash
$ vagrant port my-machine
```

## オプション

* [`--guest PORT`](https://www.vagrantup.com/docs/cli/port.html#_guest_PORT) - 指定したゲストマシンのポートに対応するホストマシンのポートのみを表示する。ゲストマシンがそのポートをフォワーディングしていない場合、エラーとなる。これはクイック・スクリプトとして有用である。以下に例示する。

```bash
$ ssh -p $(vagrant port --guest 22)
```

* `--machine-readable` - これはVagrantに対して、ヒューマン・フレンドリーな出力の代わりに、[マシン・リーダブル](https://www.vagrantup.com/docs/cli/machine-readable.html)な表示を行うように指定する。

# powershell

**コマンド：**`vaagrant powershell`

稼働しているVagrantマシン内でPowerShellプロンプトを開く。

このコマンドは、PowerShellをサポートしているマシンでのみ動作する。すべての環境がPowerShellをサポートしているわけではない。

## オプション

* [`-c COMMAND`](https://www.vagrantup.com/docs/cli/powershell.html#_c_COMMAND) または  `--command COMMAND` - 一つのPowerShellコマンドを実行し、標準出力と標準エラー出力に表示したのち、終了する。

# provision

**コマンド：**`vagrant provision [VM-NAME]`

稼働しているVagrantが管理しているマシンに対して、設定された[プロビジョナ](https://www.vagrantup.com/docs/provisioning/)を稼働させる。

このコマンドは、さまざまなプロビジョナてすばやくテストするには最適である。そして、シェルスクリプトやChefクックブックやPuppetモジュールなどのインクリメンタル開発に対して特に有効な手法である。マシンのプロビジョニング・スクリプトに対して単純な修正だけを行うことができ、`vagrant provision`を実行し、想定した結果を得られるかを確認する。繰り返し実行して、洗練させる。

## オプション

* [`--provision-with x,y,z`](https://www.vagrantup.com/docs/cli/provision.html#_provision_with_x_y_z) - 指定したプロビジョナのみ実行する。例えば、`:shell`と `:chef_solo`プロビジョナがある場合、`vagrant provision --provison-with shell`を実行するとshellプロビジョナのみが実行される。

# rdp

**コマンド：**`vagrant rdp`

ゲストマシンとのリモートデスクトップセッションのためのRDPクライアントを開始する。これはリモートデスクトップ、具体的にはWindowsのみ、をサポートするVagrant環境に対してのみ動作する。

## そのままの引数

--の後に指定することで、コマンドライン上のRDPクライアントに対して、そのままの引数を受け渡すことができる。Vagrantはこれらをただ単に受け渡すのみである。例えば、

```bash
$ vagrant rdp -- /span
```

Windowsでの上記のコマンドは、`mtsc.exe /span config.rdp`を実行し、RDPに対してマルチ・デスクトップの切り替えを許可する。

Mac OS Xなどのダーウィンホスト上では、追加引数は生成されたRDP設定ファイルに追加される。これらのファイルによって、異なる領域に複数のオプションを含ませることができる。複数の引数はクォートによって区切る必要がある。以下に例示する。

```bash
$ vagrant rdp -- "screen mode id:i:0" "other config:s:value"
```

Mac用のMicrosoft RDPクライアントは設定ファイルの動作検証を行わない。これは、もし無効な設定オプションを指定したり、誤記によるエラーが発生した場合、クライアントはのそのエラーを無視して動作を継続する。

# reload

**コマンド：**`vagrant reload [NAME|ID]`

[halt](https://www.vagrantup.com/docs/cli/halt.html)を実行した後につづいて[up](https://www.vagrantup.com/docs/cli/up.html)を行うのに相当する。

このコマンドは通常、Vagrantfile内で実施される変更のために使用される。何らかの変更をVagrantfileに対して行ったのあと`reload`を呼び出す。

設定されたプロビジョナは、デフォルトでは再度実行されない。`--provision`フラグを指定することでプロビジョナを再実行させることができる。

## オプション

* [`--provision`](https://www.vagrantup.com/docs/cli/reload.html#_provision) - 実行するプロビジョナを強制する。
* [`--provision-with x,y,z`](https://www.vagrantup.com/docs/cli/reload.html#_provision_with_x_y_z) - これは指定したプロビジョナのみ実行する。例えば、`:shell`と`:chef_solo`プロビジョナを持っている場合、`vagrant provison --provison-with shell`を実行するとshellプロビジョナのみが実行される。

# resume

**コマンド：**`vagrant resume [NAME|ID]`

前回suspendコマンドによってサスペンドしたVagrantが管理しているマシンをレジュームする。

## オプション

* [`--provision`](https://www.vagrantup.com/docs/cli/reload.html#_provision) - 実行するプロビジョナを強制する。
* [`--provision-with x,y,z`](https://www.vagrantup.com/docs/cli/reload.html#_provision_with_x_y_z) - これは指定したプロビジョナのみ実行する。例えば、`:shell`と`:chef_solo`プロビジョナを持っている場合、`vagrant provison --provison-with shell`を実行するとshellプロビジョナのみが実行される。

# share

**コマンド：**`vagrant share`

shareコマンドはVagrant共有セッションを初期化し、世界中の誰でもそのVagrant環境を共有できることを許可し、ほぼどのようなネットワーク環境ででもVagrant環境内で直接協調することができるようにする。

すべての詳細なVagrant共有については[共有Vagrantのセクション](https://www.vagrantup.com/docs/share/)を参照のこと。

## オプション

* [`--disable-http`](https://www.vagrantup.com/docs/cli/share.html#_disable_http) - Vagrant環境に対して公共のアクセス可能なHTTPエンドポイントを生成することを無効化する。この設定において、共有にアクセスする唯一の方法は`vagrant connect`を用いることである。
* [`--http PORT`](https://www.vagrantup.com/docs/cli/share.html#_http_PORT) - Vagrant環境内で実行するHTTPサーバのポート番号を指定する。デフォルトでは、Vagrantはこの番号を見つけようと試みる。これは``--disable-http`が設定されている場合、効果を発揮しない。
* [`--https PORT`](https://www.vagrantup.com/docs/cli/share.html#_https_PORT) - Vagnrat環境内で実行するHTTPSサーバのポート番号を指定する。デフォルトでは、Vagrantはこの番号を見つけようと試みる。これは--disable-httpが設定されている場合、効果を発揮しない。
* [`--ssh`](https://www.vagrantup.com/docs/cli/share.html#_ssh) - SSH共有を有効にする。デフォルトではこれは無効である。
* [`--ssh-no-password`](https://www.vagrantup.com/docs/cli/share.html#_ssh_no_password) - SSH共有が有効化されたときに生成されたSSH鍵のペアの暗号化を無効化する。
* [`--ssh-port PORT`](https://www.vagrantup.com/docs/cli/share.html#_ssh_port_PORT) - Vagrant環境内で実行するSSHサーバのポート番号を指定する。デフォルトではこの番号を見つけようと試みる。
* [`--ssh-once`](https://www.vagrantup.com/docs/cli/share.html#_ssh_once) - 一度だけSSHアクセスを許可する。Vagrant環境に対する初回のSSH経由の接続ののち、生成された鍵ペアは破棄される。

# snapshot

**コマンド：**`vagrant snapshot`

ゲストマシンのスナップショットを管理するために使用される。スナップショットはゲストマシンの任意の時点での状態を記録する。この環境は素早く復旧することができる。実験と試行ののち以前の状態に素早く復旧させる。

スナップショットをとることはすべてのプロバイダによってサポートされているわけではない。サポートされていない場合、Vagrantはエラーメッセージを表示する。

このコマンドの主な機能はサブコマンドによって拡張される。

* [`push`](https://www.vagrantup.com/docs/cli/snapshot.html#push)
* [`pop`](https://www.vagrantup.com/docs/cli/snapshot.html#pop)
* [`save`](https://www.vagrantup.com/docs/cli/snapshot.html#save)
* [`restore`](https://www.vagrantup.com/docs/cli/snapshot.html#restore)
* [`list`](https://www.vagrantup.com/docs/cli/snapshot.html#list)
* [`delete`](https://www.vagrantup.com/docs/cli/snapshot.html#delete)

## snapshot push

**コマンド：**`vagrant snapshot push`

スナップショットをとり、それをスナップショットスタックに入れる。

は特定の名前を付けない場合の`vagrant snapshot save`の省略形である。逆に`vagrant snapshot pop`を呼び出すと、pushした状態で復旧される。

> **警告：**pushとpopを使用する際、混在するのは安全でないのでsaveとrestoreの使用は避けること。

## snapshot pop

**コマンド：:**`vagrant snapshot pop`

このコマンドは`vagrant snapshot push`とは逆のコマンドであり、pushされた状態を復旧する。

## オプション

* [`--[no-]provision`](https://www.vagrantup.com/docs/cli/snapshot.html#_no_provision) - プロビジョナの実行を強制する（または、実行しないようにする)。
* [`--no-delete`](https://www.vagrantup.com/docs/cli/snapshot.html#_no_delete) - 復旧後スナップショットの削除をしないようにする（そして、再度同じポイントから復旧することを可能とする）。

## snapshot save

**コマンド：**`vagrant snapshot save NAME`

このコマンドは新しい名前のスナップショットを保存する。このコマンドが使用されたとき、`push`または`pop`のサブコマンドは安全に使用することができない。

## snapshot restore

**コマンド：**`vagrant snapshot restore NAME`

このコマンドは名前が付けられたスナップショットを復旧する。

* [`--[no-]provision`](https://www.vagrantup.com/docs/cli/snapshot.html#_no_provision) - プロビジョナの実行を強制する（または、実行しないようにする)。

## snapshot list

**コマンド：**`vagrant snapshot list`

このコマンドは保存されたすべてのスナップショットを一覧表示する。

## snapshot delete

**コマンド：**`vagrant snapshot delete NAME`

このコマンドは名前を付けたスナップショットを削除する。

いくつかのプロバイダはすべての"子"スナップショットをはじめに削除することを要求する。Vagrantそのものは、それらの子供がなんであるかを追跡することはない。たとえばこのような場合(VirtualBoxなど)、snapshotをとった時とは逆の順番で確実にスナップショットを削除していく必要がある。
このコマンドは一般的に、スナップショットをとる前にマシンを停止する

# ssh

**コマンド：**`vagrant ssh [NAME|ID] [--EXTRA_SSH_ARGS]`

SSHでマシンに接続し、シェルへアクセスできるようにする。

コマンドライン上で`--`があった場合、そのあと引数をすべて`ssh`実行に直接渡す。これは、リバース・トンネリングなどのようなものをする為に任意のコマンドを、`ssh`プログラムに受け渡すことを許す。

## オプション

* [`-c COMMAND`](https://www.vagrantup.com/docs/cli/ssh.html#_c_COMMAND) または `--command COMMAND` - これは一つだけのSSHコマンドを実行する。たとえば標準出力や標準エラー出力へ出力し、終了する。
* [`-p`](https://www.vagrantup.com/docs/cli/ssh.html#_p) または `--plain` - 認証なしにSSH接続を行い、ユーザーに認証を任せる。

## バックグラウンド実行

もしコマンドをバックグラウンドで実行するように指定した場合(シェル・コマンドへ`&`をつけるなど)、ほとんどすぐに終了される。これは、Vagrantがコマンドを実行した場合、それはシェルのコンテキスト内で実行され、シェルが終了したとき、すべての子プロセスも同時に終了してしまうためである。

これを回避する為に、シェルからプロセスにでタッチする必要がある。そのシェルでこれを行う方法はGoogleで学んでほしい。これを実行するための一つの方法は`nohup`コマンドである。

# ssh config

**コマンド：**`vagrant ssh-config [NAME|ID]`

(`vagrant ssh`を使う代わりに)直接`ssh`から、稼働しているVagrantマシンへSSHするためのSSH設定ファイルに対する有効な設定を出力する。

## オプション

* [`--host NAME`](https://www.vagrantup.com/docs/cli/ssh_config.html#_host_NAME) - 出力された設定用のホストの名前

# status

**コマンド：**`vagrant status [NAME|ID]`

Vagrantが管理しているマシンの状態を示す。

Vagrantマシンが稼働しているか、サスペンドか、または生成されていないなどを忘れることで、Vagrantに対して一旦快適さを手に入れることは、簡単である。このコマンドはゲスト・マシンがおかれている状態を教えてくれる。

# suspend

**コマンド：**`vagrant suspend [NAME|ID]`

Vagrantが管理しているゲスト・マシンを、完全に[停止してしまう](https://www.vagrantup.com/docs/cli/halt.html)、または、[破棄してしまう](https://www.vagrantup.com/docs/cli/destroy.html)のではなく、サスペンドする。

サスペンドは、そのマシンの*その時点でのそのままの状態*を効果的に保存する。そして、後で[レジューム](https://www.vagrantup.com/docs/cli/resume.html)したとき、完全に起動するのではなく、その時点から即座に稼働を再開しする。

これは通常、そのゲスト・マシンの中のRAMのすべての内容を格納するためのディスク領域が必要であるが、サスペンドの間はマシンがホスト・マシンのRAMやCPUサイクルをもはや消費しない。

# up

**コマンド：**`vagrant up [NAME|ID]`

このコマンドは[Vagrantfile](https://www.vagrantup.com/docs/vagrantfile/)に基づいて、ゲスト・マシンを生成して設定を行う。

これは、Vagrantマシンがどのように生成されるかという点で、Vagrantの中で最も重要なコマンドである。Vagrantを使用する誰しもが、このコマンドほ毎日使用するだろう。

## オプション

* [`--[no-]destory-on-error`](https://www.vagrantup.com/docs/cli/up.html#_no_destroy_on_error) - 新たに生成したマシンが失敗しり、予期せぬエラーが発生した場合にdestroyする。これは最初の`vagrant up`の時だけ発生する。
* [`--[no-]install-provider`](https://www.vagrantup.com/docs/cli/up.html#_no_install_provider) - 要求されたプロバイダがインストールされていない場合、Vagrantは可能であるならば自動的にインストールしようとする。デフォルトではこれは有効である。
* [`--[no-]parallel`](https://www.vagrantup.com/docs/cli/up.html#_no_parallel) - プロバイダがサポートしているならば、複数のマシンを並列で起動する。この機能がサポートされているかについては、そのプロバイダのドキュメントを参照のこと。
* `--provider x` - 与えた[プロバイダ](https://www.vagrantup.com/docs/providers/)でマシンを起動する。デフォルトではこれは"virtualbox"である。
* [`--provision`](https://www.vagrantup.com/docs/cli/up.html#_provision) - 強制的にプロビジョナを実行する。
* [`--provision-with x,y,z`](https://www.vagrantup.com/docs/cli/up.html#_provision_with_x_y_z) - 与えたプロビジョンのみで実行する。たとえば、`:shell`と`:chef_solo`プロビジョナがあり、`vagrant provision --provision-with shell`を実行した場合、シェル・プロビジョナのみが実行される。

# version

**コマンド：**`vagrant version`

このコマンドは、使用可能なVagrantの最新のバージョンとともに、インストールされているVagrantのバージョンを示す。

使用可能な最新のVagrantのバージョンを決定する為に、このコマンドはネットワーク・コールをする。インストールされているバージョンだけを見たいのであれば、`vagrant --version`を使用する。

# 更なるコマンド

サイドバーや`vagrant -h`で一覧表示されるコマンドに加えて、Vagrantは基本的なヘルプ出力からは隠されているいくつかのコマンドがある。これらのコマンドは、初心者には有用でないため、また、通常使用されないために隠されている。これらのコマンドは”主要でないサブコマンド”とよぶ。

主要でないサブコマンドを含む、すべてのサブコマンドをそれ自身が主要でないサブコマンドである`vagrant list-commands`を実行すること見ることができる。

主要でないサブコマンドを一覧表示する為に、特殊なコマンドを実行する必要があるが、実際に主要でないサブコマンドを実行するためには、何も特別なことをする必要はないという点に注意すること。それらのコマンドは他のコマンドと同じように`vagrant COMMAND`などと実行するだけである。

主要でないコマンドを以下に示す。詳細はそれぞれのコマンドをクリックすること。

* [`docker-exec`](https://www.vagrantup.com/docs/docker/commands.html)
* [`docker-logs`](https://www.vagrantup.com/docs/docker/commands.html)
* [`docker-run`](https://www.vagrantup.com/docs/docker/commands.html)
* [`rsync`](https://www.vagrantup.com/docs/cli/rsync.html)
* [`rsync-auto`](https://www.vagrantup.com/docs/cli/rsync-auto.html)

# マシン・リーダブル・アウトプット

すべてのVagrantコマンドはマシン・リーダブル・アウトプット・モードを可能とする`--machine-readable`フラグを受け付ける。このモードにおいては、ターミナルへの出力はマシン・フレンドリーな出力に置き換えられる。

このモードは、Vagrantをプログラム的に実行することを容易にし、出力されたデータを読み込む。この出力形式は[後方互換性](https://www.vagrantup.com/docs/installation/backwards-compatibility.html)ポリシーによって保護されている。しかしながら、Vagrant 2.0がリリースされるまでに、それをより活用することを決心した場合、マシン・リーダブル・アウトプットは変更されるかもしれない。しかし、後方互換性は、出力形式を解析するためのクライアントライブラリを描くために安全であることを約束する。

> **上級者向け！**これはVagrantをプログラム的に実行する場合にのみ使用される、上級者向けの内容である。もし、Vagrantを始めたばかりであるならば、このセクションは飛ばしてもらって構わない。

## 対応中

このマシン・リーダブル・アウトプットはとても新しい（Vagrant 1.4の一部としてリリースされた)。我々はその適切なユース・ケースを収集し、コマンドそれぞれの出力を構築しているところである。マシン・リーダブル・アウトプットで何かを成し遂げようとしても、情報がないためにそれができなかもしれない。

そのような場合は、われわれは確かな情報が使えるように要求する[課題を提示](https://github.com/mitchellh/vagrant/issues)することをお願いしたい。

## 書式

マシン・リーダブル・アウトプットの書式は、行指向でコンマ区切りのテキストである。これは、RubyやPythonなどのフル・プログラミング言語などに加えて、awkやgrepなどの標準的なUNIXのツールを使用して解析するのが極めて容易である。

書式:

```bash
timestamp,target,type,data...
```

それぞれの構成要素は以下のとおりである。

* **timestamp**はメッセージが出力された時点のUTCのUNIXタイムスタンプである。
* **target**はつづく出力の対象である。もしメッセージがVagrantの全体に関連付けられる場合、空である。しかしながら、使用している状態がマルチVMであった場合、マシンを特定する為にそのマシンの名前が出力に関連付けられるのが通常である。
* **type**は出力されるマシン・リーダブル・アウトプットメッセージの種類である。 これには以降に示す標準的な種類のセットがある。
* **data**はゼロもしくはそれ以上のコンマで区切られた、直前のtypeに関連付けられた値である。このdatの正確な量や意味はtypeに依存し、完全に理解する為にtypeに関するドキュメントを読み込む必要がある。

書式の中で、dataがコンマを含んでいた場合、それを`%!(VAGRANT_COMMA)と置き換える。これは、awkなどのツールと親和性が高いので、\などのようなエスケープ文字よりも好まれる。

書式における改行は、標準的なエスケープ・シーケンスによって置き換えられる。改行は、出力内で文字列\nになる。キャリッジ・リターンは文字列\rとなる。

## type

ここではマシン・リーダブル・アウトプットで出力される市に使用できる、すべてのtypeについて示す。

| type | 説明 |
|:-----|:-----|
| box-name | VagrantにインストールされているBoxの名前 |
| box-provider | インストールされたBoxに対するプロバイダ |
| cli-command | 使用可能な`vagrant`のサブコマンド |
| error-exit | Vagrantを終了させるエラー。これはエラーを含む。2つのdata要素を持ち、エラーの種類とエラーメッセージである |
| provider-name | ターゲット・マシンのプロバイダの名前 |
| ssh-config | マシンに対するOpenSSH互換のSSH設定。これはたいてい"ssh-config"コマンドの結果である |
| state-human-long | マシンの状態のヒューマン・リーダブルな説明。これは長いバージョンであり、一つの段落かそれ以上となる |
| state-human-short	| マシンの状態のヒューマン・リーダブルな説明。これは短いバージョンであり、一文程度となる |

# 関連記事

* 前の記事：[【Vagrantドキュメント意訳】04.入門](http://qiita.com/ringo0321/items/07df872d6c99b961be9b)
* 次の記事：[【Vagrantドキュメント意訳】06.Vagrant共有](http://qiita.com/ringo0321/items/224150c93f2930eec54a)