Windowsユーザのための Vagrant 入門 [環境構築]

# Windowsユーザのための Vagrant 入門 [環境構築]
## 目的
* Windows しかもっていないユーザにも Vagrant を使ってもらうため
    * Mac / Linux をお持ちの方はそちらを使ってください
    * より簡単に導入し利用可能です

## なぜ Vagrant を使うのか?
* OS インストール メディア からインストールする手間を省けます(圧倒的時短)
    * もちろん、経験としてOSメディアからのインストールも必要かもしれませんが、毎回行う必要はないと思います
    * 慣れてきたらOSインストールに割いていた時間を他のことに使いましょう
* その他は以下などを参照してください
    * http://dev.classmethod.jp/server-side/virtual-box-vagrant/

## 注意!!
* 今回の構成(Windows10/Vagrant1.8.1)にはまだバグが含まれており途中でエラーが出る可能性があります
* 私が遭遇したものについては回避方法を記載していますので、最終的には Mac / Linux 上と同様に Vagrant を実行できると思います
    * vagrant ssh コマンドで VM にログインできます
* 画面キャプチャの Windows 環境が英語版なのは私の趣味なので気にしないでください
* おそらく言語設定に依存したエラーはないと思います…(日本語版で未確認のため自信なし)
* これも私の趣味で PowerShell を利用しています
* cmd の場合は適宜読み替えて頂くか、これを機に PowerShell を使ってみるのはいかがでしょうか

## 環境
* Windows10 Pro
  * KVM 上の VM です
  * CPU: Core2Duo 2.4Ghz 4core (相当)
  * Memory: 2GB
  * Disk: 60GB
      * 参考値: ダウンロードファイルも含めて約 1GB 消費されました(Vagrantのインストール直後まで)
* VirtualBox 5.0.14 (2016/02/29 時点の最新)
* Vagrant 1.8.1 (2016/02/29 時点の最新)
  * インストール後にOSの再起動が必要になります
* Cygwin 2.4.1 (2016/02/29 時点の最新)
  * Windows 上に rsync と ssh がないので Cygwin で入れて PATH を通すことで回避しています
      * rsync
      * openssh

## リファレンス
### Vagrant
* Download https://www.vagrantup.com/downloads.html
* Installation https://www.vagrantup.com/docs/installation/

### VirtualBox
* Download https://www.virtualbox.org/wiki/Downloads
* Installation https://www.virtualbox.org/manual/ch02.html#installation_windows

### Cygwin
* Download/Installation http://cygwin.com/install.html

## 環境構築
### VirtualBox のダウンロードとインストール
1. x86/amd64 のリンクから落とします
![Screenshot 2016-02-29 01.15.55.png](https://qiita-image-store.s3.amazonaws.com/0/67892/3241c7a7-acf1-0005-c5da-24f738a5642a.png)

1. ダウンロードしたファイルをダブルクリックしてインストーラを実行します
![Screenshot 2016-02-29 01.17.17.png](https://qiita-image-store.s3.amazonaws.com/0/67892/fe239bf8-5253-165d-9586-715926832964.png)

1. Unknown Publisher の警告が出ますが進めます
![Screenshot 2016-02-29 01.17.42.png](https://qiita-image-store.s3.amazonaws.com/0/67892/12bf3291-c60f-8fba-67aa-b1fe4daf7d8e.png)

1. すべてデフォルトで進めてください
![Screenshot 2016-02-29 01.18.00.png](https://qiita-image-store.s3.amazonaws.com/0/67892/091b9319-0a0b-7472-9a1d-9b9af5aa82d6.png)

1. VirtualBox が起動したら成功です
![Screenshot 2016-02-29 01.19.51.png](https://qiita-image-store.s3.amazonaws.com/0/67892/75bfa7dc-f3c7-5c45-6a67-f82f915052d0.png)
![Screenshot 2016-02-29 01.20.14.png](https://qiita-image-store.s3.amazonaws.com/0/67892/ceca2d8b-24bf-6563-9d18-028e9d8e746b.png)

1. Extension Pack をインストールするために一旦終了させます
![Screenshot 2016-02-29 01.20.31.png](https://qiita-image-store.s3.amazonaws.com/0/67892/2985d78e-d664-1145-7f78-d296f5ea8cba.png)

### VirtualBox Extension Pack のダウンロードとインストール
1. All supported platforms のリンクから落とします
![Screenshot 2016-02-29 01.16.49.png](https://qiita-image-store.s3.amazonaws.com/0/67892/d551a21f-7f80-c3a8-f87e-ee122909cc7f.png)

1. ダウンロードしたファイルをダブルクリックしてインストーラを実行します
![Screenshot 2016-02-29 01.21.11.png](https://qiita-image-store.s3.amazonaws.com/0/67892/572baabe-a47b-57f9-b8f0-f5ab913200d1.png)

1. こちらもすべてデフォルトですすめます
1. 以下のPopUpが表示されれば完了です
![Screenshot 2016-02-29 01.23.07.png](https://qiita-image-store.s3.amazonaws.com/0/67892/5fb8ea7c-f17e-5ab5-ef63-c266d62a8c6d.png)

### Vagrant のダウンロードとインストール
1. WINDOWS Universal (32 and 64-bit) のリンクから落とします
![Screenshot 2016-02-29 01.24.36.png](https://qiita-image-store.s3.amazonaws.com/0/67892/fc120637-3953-7262-fe65-1134fb53d85c.png)

1. ダウンロードしたファイルをダブルクリックしてインストーラを実行します
![Screenshot 2016-02-29 01.26.06.png](https://qiita-image-store.s3.amazonaws.com/0/67892/f570aef1-379a-dc5c-901e-d541ed71e4cc.png)

1. こちらもすべてデフォルトですすめます
![Screenshot 2016-02-29 01.26.21.png](https://qiita-image-store.s3.amazonaws.com/0/67892/4553d495-b0c2-13bb-e735-63972290954c.png)

1. 以下のPopUpが表示されれば完了です
![Screenshot 2016-02-29 01.33.21.png](https://qiita-image-store.s3.amazonaws.com/0/67892/b9fa9844-f3fb-9c84-45cd-444b667d9da7.png)

1. ここでOS再起動をします
![Screenshot 2016-02-29 01.33.33.png](https://qiita-image-store.s3.amazonaws.com/0/67892/84f8490c-837c-56bf-f32d-76d446dd0f89.png)

1. シェル(PowerShell)を起動してバージョン情報が表示されていたら完了です
````
vagrant --version
````
![Screenshot 2016-02-29 02.02.35.png](https://qiita-image-store.s3.amazonaws.com/0/67892/82d8a31d-08e2-3ce5-1d2c-2b43b0402f8a.png)

## 実行テスト
### CentOS.org の公式 Box を動かしてみましょう
* https://atlas.hashicorp.com/centos/boxes/7

### 事前準備
1. Cygwin をインストールして、さらに rsync と openssh パッケージをインストールします
![Screenshot 2016-02-29 03.06.59.png](https://qiita-image-store.s3.amazonaws.com/0/67892/a11f2577-0f32-fe29-9351-6d7cec6ad09c.png)
![Screenshot 2016-02-29 03.23.21.png](https://qiita-image-store.s3.amazonaws.com/0/67892/3213a4ad-d808-06fc-63e0-ad8ba4d82409.png)

1. Windows の環境変数に rsync のパスを追加します
 * 以下の赤枠で囲んだパスが追加したパスになります
 * cygwin のインストール状況によって異なる場合があります
 * rsync.exe のあるパスを設定してください
![Screenshot 2016-03-01 01.34.15.png](https://qiita-image-store.s3.amazonaws.com/0/67892/a29fb241-ecce-dd0d-1ee0-fde7f2ca90d4.png)

1. PowerShell をあらたに実行します
1. 設定ファイルの置き場所用にディレクトリを作成します
````
ni vagrant\centos\centos7-test01 -ItemType Directory
cd .\vagrant\centos\centos7-test01\
````
![Screenshot 2016-02-29 02.13.57.png](https://qiita-image-store.s3.amazonaws.com/0/67892/99edb315-ebea-ab4e-e334-e37b110188b9.png)

1. VirtualBox を起動しておきます

### CentOS7 Box を実行する
1. Box を追加します
````
vagrant box add centos/7
````

1. ここで次のエラーが出てしまう場合は MS Visual C++ 2010 x86 Redistributables のインストールが必要の場合があります。
![Screenshot 2016-02-29 02.43.37.png](https://qiita-image-store.s3.amazonaws.com/0/67892/8a131e8a-1438-765d-4d70-4a31688a22a4.png)
以下のリンクからインストールしてください
  * https://www.microsoft.com/en-us/download/confirmation.aspx?id=5555
      * 参考情報1: https://laracasts.com/discuss/channels/servers/error-running-vagrant-box-add-laravelhomestead-on-windows-10
      * 参考情報2: https://github.com/mitchellh/vagrant/issues/6764
1. box add が成功した場合の出力結果は以下です。今回は VirtualBox なので 2) を選択します
![Screenshot 2016-02-29 02.52.25.png](https://qiita-image-store.s3.amazonaws.com/0/67892/330bc2af-6b64-ac89-fada-4c44e2e7e37a.png)
インターネット接続環境にも依存しますが、ここで時間がかかる場合があります

1. Successfully added box と表示されていたら成功です
1. Box の公式サイトに記載されているコマンドをそのまま実行します
````
vagrant init centos/7; vagrant up --provider virtualbox
````
![Screenshot 2016-02-29 02.22.50.png](https://qiita-image-store.s3.amazonaws.com/0/67892/f781568e-72b5-d8ff-724d-09f6557c2124.png)
1. エラーが出ます。調査中です… > WorkAround の確認ができました。
![Screenshot 2016-02-29 03.59.52.png](https://qiita-image-store.s3.amazonaws.com/0/67892/bf6f049f-8bb7-88dd-76f3-2f339eb840e8.png)
1. 上記のエラーが出た場合、以下の対処をします。
  * https://github.com/mitchellh/vagrant/issues/6702#issuecomment-166503021
1. 具体的には以下のファイルの 77-79 行目を # でコメントアウトします。
````
C:\HashiCorp\Vagrant\embedded\gems\gems\vagrant-1.8.1\plugins\synced_folders\rsync\helper.rb
````
![Screenshot 2016-03-01 01.03.53.png](https://qiita-image-store.s3.amazonaws.com/0/67892/c84b02df-cf81-1d12-84d9-4f55eb22129e.png)

1. ファイル編集後の正常性を確認するために VM を停止、削除して再作成してみましょう
````
vagrant halt
vagrant destroy
vagrant up --provider virtualbox
````
1. はい、今度はエラーなく成功しました
![Screenshot 2016-03-01 00.57.44.png](https://qiita-image-store.s3.amazonaws.com/0/67892/bbed4646-31b1-7b70-1494-073e469feee7.png)

1. VirtualBox 上に VM ができているのを確認できると思います
![Screenshot 2016-02-29 04.04.04.png](https://qiita-image-store.s3.amazonaws.com/0/67892/665e060b-b25a-eb3b-7aad-c7554fd29b74.png)

1. では接続してみましょう
````
vagrant ssh
````
1. プロンプトが出ていれば接続成功です
![Screenshot 2016-02-29 04.04.51.png](https://qiita-image-store.s3.amazonaws.com/0/67892/a2d41b8b-55f6-c93f-1b9d-a62a09f3ae6c.png)

1. exit します
![Screenshot 2016-02-29 04.05.21.png](https://qiita-image-store.s3.amazonaws.com/0/67892/7b63971f-a0e5-b207-f282-be22a52d05b2.png)

1. 停止してみましょう
````
vagrant halt
````
1. VirtualBox 上の VM が停止しているのを確認できると思います
![Screenshot 2016-02-29 04.06.05.png](https://qiita-image-store.s3.amazonaws.com/0/67892/58d6bf8a-7f5d-3711-a73a-135f11a6d18d.png)

1. もう一度起動させてみます
````
vagrant up --provider virtualbox
````
1. もう一度繋いでみましょう
````
vagrant ssh
````
1. yum update など試してみてください
````
$ sudo yum update
````

### 終了
## 所感
* やはり Windows で Vagrant を使うのは若干ハードルが高いように思いました
* できれば Mac か Unix 環境で利用されるのが楽で良いかと思います…