Vagrant - Vagrant 1.5 で追加された機能のまとめ

# 1. はじめに

Vagrant 1.5 が2014年3月10日にリリースされました。
Vagrant 1.5 ではいくつかの機能が追加されています。
今回は、Vagrant 1.5 で追加された機能についてまとめてみました。

# 2. 追加された機能

Vagrant 1.5 では以下の機能が追加されました。

* Vagrant Share
* Box 2.0
* Rsync Synced Folders
* Hyper-V
* SMB Synced Folders

# 3. Vagrant Share

Vagrant Shareによってインターネット経由でVagrant環境を共有することができるようになりました。
Vagrant Shareでは以下の３つのモードが提供されています。

* HTTP Sharing

* SSH Sharing

* General Sharing

なお、Vagrant Shareを利用する場合、Vagrant Cloudのアカウントが必要になります。

URL: https://vagrantcloud.com/

アカウント取得後、コマンドラインで下記のコマンドを実行します。

```
$ vagrant login
```

コマンド実行後、ユーザー名とパスワードを聞かれるのでアカウント登録時に入力した内容を入力してください。

## 3.1 HTTP Sharing

HTTP Sharingでは、インターネット経由でVagrantの仮想マシン上のWebサーバーに接続することができます。
このモードを使用する場合、下記の手順を行います。

(1) Vagrantfileのネットワーク設定を下記の通りにします。

```
config.vm.network "forwarded_port", guest: 80, host: 12345
```

*) host:12345の12345はwell-knownポート以外、かつ、65535以内の値を指定します。

(2) 仮想マシンを起動します。

```
$ vagrant up
```

(3) 下記のコマンドを実行します。

```
$ vagrant share
```

(4) (3)のコマンドを実行すると下記のようなメッセージが表示されます。そのメッセージに記載されているURLにアクセスするとVagrantの仮想マシンに設置されているページが表示されます。

```
==> default: Your Vagrant Share is running! Name: impatient-reptile-3172
==> default: URL: http://impatient-reptile-3172.vagrantshare.com
==> default:  
==> default: You're sharing your Vagrant machine in "restricted" mode. This
==> default: means that only the ports listed above will be accessible by
==> default: other users (either via the web URL or using `vagrant connect`).
```

## 3.2 SSH Sharing

SSH Sharingでは、インターネット経由でVagrantの仮想マシンにSSH接続することができます。
このモードを使用する場合、下記の手順を行います。

(1) 仮想マシンを起動します。

```
$ vagrant up
```

(2) 下記のコマンドを実行します。

```
$ vagrant share --ssh
```

上記コマンドを実行すると、下記のメッセージが表示されます。
任意のパスワードを入力して進めてください。

```
==> default: Generating new SSH key...
    default: Please enter a password to encrypt the key: 
    default: Repeat the password to confirm:
```

(3) (2)の実行が完了すると、下記のようなメッセージが表示されます。

```
==> default: Creating Vagrant Share session...
    default: Share will be at: hardworking-wombat-3198
==> default: Your Vagrant Share is running! Name: hardworking-wombat-3198
```

「default: Your Vagrant Share is running! Name:」以降に記載されている内容がSSH接続時に使用するセッション名になります。

このセッション名を使用して、下記のコマンドを実行します。

```
$ vagrant share --ssh (セッション名)
```

パスワードの入力を求められるので、(2)で入力したパスワードを入力します。

入力完了後、Vagrantの仮想マシンにSSH接続されます。

(注意)
2014年4月5日時点だと、動作が遅く、コマンドを入力するだけでも大変なので今後の改善に期待しています。

## 3.3 General Sharing

General Sharingでは、インターネット経由でVagrantの仮想マシンが解放しているポートに対して接続することができます。
このモードを使用する場合、「vagrant connect (セッション名)」を実行すればいいみたいです。

# 4. Box 2.0

Vagrant 1.5からはBoxのバージョン管理ができるようになったことやBox名がhashicorp/precise64のように簡潔になったという記載がVagrantのブログには書かれていました。
ただ、これは Vagrant Cloud を使うことが前提のような気がします。

# 5. Rsync Synced Folders

Vagrantの仮想マシンとローカルマシンとの間でrsyncを使ったファイルの同期ができるようになりました。

ただ、この機能を使う場合、Vagrantの仮想マシンとローカルマシンの両方にrsyncがインストールされていないといけません。
→ Macを使っていたら特に気にすることはありませんが、Windowsを使っている場合はCygwin等を使ってrsyncをインストールしないといけないと思います。

この機能を使う場合、Vagrantfileのsync folderの設定を下記の通りにします。

```
config.vm.synced_folder (ローカルマシン：コピー元のパス), (仮想マシン：コピー先のパス), type: "rsync"
```

(例) ローカルマシンのデスクトップとvagrantユーザーのホームディレクトリ間でrsyncする場合 (ローカルマシンがMacの場合)

```
config.vm.synced_folder "~/Desktop", "/home/vagrant", type: "rsync"
```

# 6. Hyper-V

Vagrant起動時に指定するプロバイダーにHyper-Vが指定できるようになりました。

```
$ vagrant up --provider=hyperv
```

# 7. SMB Synced Folders

WindowsユーザーがVagrantを利用する場合、Synced FoldersでSMBを指定することができます。

```
config.vm.synced_folder ".", "/vagrant", type: "smb"
```

# 8. 参考記事

https://www.vagrantup.com/blog/vagrant-1-5-and-vagrant-cloud.html