【Vagrant】Windowsに仮想Linux環境を構築する手順

## 作業環境

- Windows 10 Pro(64ビット)

## 準備

### VirtualBoxをインストールする

下記のURLからWindows版VirtualBoxのインストーラをダウンロード。
指示に従ってインストールします。

https://www.vagrantup.com/downloads.html

![20190409_0001.jpg](https://qiita-image-store.s3.amazonaws.com/0/87039/6d2de8ed-596c-8432-87be-41f5a5961e13.jpeg)


### Vagrantをインストールする

下記のURLからWIndows版Vagrantのインストーラをダウンロード。
指示に従ってインストールします。

※Vagrantのインストーラを起動したらNextが押せるようになるまでしばらく時間がかかる場合があります。

<https://www.vagrantup.com/downloads.html>

![20190409_0002.jpg](https://qiita-image-store.s3.amazonaws.com/0/87039/a8a9dbfb-adc3-ff4e-9528-e510b549afe4.jpeg)


## 仮想環境を構築

### Boxファイルを検索する

BoxファイルとはVagrantを使用してVirtualBoxに仮想環境を構築するためのイメージファイルです。

下記のURLからOS名などで検索してください。

今回は「CentOS」で検索して一番上に出てきた「centos/7」を使用します。

![20190409_0003.jpg](https://qiita-image-store.s3.amazonaws.com/0/87039/66e2c2ed-531b-0409-a247-bad6369ef5d8.jpeg)

Box名をクリックし、How to user this box with Vagrant: のNewタブをクリックすると表示されるコマンドをコピーしておいてください。

![201904109_0004.jpg](https://qiita-image-store.s3.amazonaws.com/0/87039/8c1fd246-67d8-7ee3-e39c-8b77092e0acc.jpeg)

### Vagrant環境の初期化

以下、 **コマンドプロンプトからの作業** となります。
Vagrant環境として設定したいフォルダを作成して移動してます。

```
D:\>mkdir vagrant\centos7
D:\>cd vagrant\centos7
D:\vagrant\centos7>
```

先程コピーしたコマンドを実行して、Vagrant環境の初期化＆仮想マシンの起動を行います。

```
vagrant init centos/7
vagrant up
```

初期化が完了したら下記のコマンドで仮想マシンが起動していることと、登録したBoxの確認。

```
D:\vagrant\centos7>vagrant status
Current machine states:

default                   running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

D:\vagrant\centos7>vagrant box list
centos/7 (virtualbox, 1902.01)
```

### Vagrantfileを編集する

Vagrantの初期化を行うと、Vagrant環境のフォルダ内(`D:\vagrant\centos7`)にVagrantfileが生成されます。

Vagrantfileを開いて、各項目の設定を行います。

#### ホストオンリーアダプタの設定

ホストオンリーアダプタとはネットワークの設定で、ホストマシンと仮想マシン間でフォルダの共有を行うためのものです。

`config.vm.network "private_network", ip: "192.168.33.10"`のコメントを解除してください。

#### フォルダ共有の設定

ホストマシンとゲストマシンで共有するフォルダを設定します。
`config.vm.synced_folder "../data", "/vagrant_data"` のコメントを解除してください。

共有したい、"ホストマシンのフォルダ", "仮想マシンのフォルダ"  に書き換えてください。
ホストマシンのフォルダはVagrantfileのあるフォルダが基点となります。

`config.vm.synced_folder "./workspace", "/home/vagrant/workspace"`

 **ホストマシンと仮想マシンでフォルダを共有するには、vbguestというvagrantプラグインが必要です。**

コマンドプロンプトから下記のコマンドを実行してインストールしてください。

`vagrant plugin install vagrant-vbguest`

#### localhost接続の設定

仮想マシンでローカルにWebサーバを立てて、ホストマシンのブラウザから ***http://localhost:8080*** に接続するために設定します。

`config.vm.network "forwarded_port", guest: 80, host: 8080`のコメントを解除してください。

#### Vagrantfileのリロード

全て完了したらVagrantfileを上書き保存します。
コマンドプロンプトから下記のコマンドでVagrantfileをリロードします。

`vagrant reload`



## 仮想マシンに接続

コマンドプロンプトから **Vagrantfileのあるフォルダに移動した状態** で`vagrant ssh` コマンドで仮想マシンにSSH接続することができます。

![20190409_0006.jpg](https://qiita-image-store.s3.amazonaws.com/0/87039/81fe07a9-3eed-bf8f-d148-66b9d69ae2d1.jpeg)

### 仮想マシンへの接続手順まとめ

1. コマンドプロンプトを起動してVagrantfileのあるフォルダに移動する。
`cd /d D:\vagrant\centos7`

2. 仮想マシンを起動する
`vagrant up`

3. 仮想マシンにSSH接続する
`vagrant ssh`

4. 作業をする

5. 作業が終わったら仮想マシンからログアウトする
   `logout`

6. 仮想マシンをシャットダウンする
   `vagrant halt`

   

2018年4月のUpdateよりも古いバージョンのWindowsを利用している場合は、OpenSSHがデフォルトで使用できないため、手動でOpenSSHをインストールするなり、Tera TermなどのSSHクライアントを使用して接続してください。

## 参考サイト
- [Vagrant + VirtualBoxでWindows上に開発環境をサクッと構築する](https://qiita.com/ozawan/items/160728f7c6b10c73b97e)
- [Windows10 に OpenSSH インストール](https://qiita.com/sigenyan/items/1de0b74541f5cef7614f)