Windows環境にVagrantでCentOS7仮想環境構築

Windows7マシンにVirtualBox+VagrantでCentOS7環境を構築します。

# 1. Vagrantの導入

今回は現時点で最新版の1.7.2を選択。
[ここ](https://www.vagrantup.com/downloads.html)から、Windows用のものをDL。

DLが終わったら実行してバシバシインストールを進めましょう。
インストール後には再起動を要求されるので注意。

# 2. VirtualBoxの導入

これも現時点で最新の4.3.26を選択。
[ここ](http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html?ssSourceSiteId=otnjp)から、Windows用のものをDL。

DLが終わったらこれまた実行してバシバシ進めます。
途中ネットワークデバイスやらをインストールするか問われるので無心で許可して進めていく。
(Oracleを信頼する、にチェックを入れても良い。そのほうが良い。)

# 3. VagrantでCentOS7環境を構築

## 3.1. 事前準備

### 3.1.1. Vagrant用ディレクトリの作成

まずはVagrant用ディレクトリを作りましょう。
Vagrantを使用して環境を立ち上げたりするのは、この場所から行います。
別に後で普通に移動できるので、適当な場所に作成しちゃいましょう。
私は適当に以下のようにデスクトップに作りました。
(ユーザ名はここでは"hoge"とします)
```
C:\Users\hoge\Desktop\work\vagrant\box
```

### 3.1.2. CentOS7用のVagrant BoxをDLする

Vagrant Boxとは環境のテンプレートのようなもので、所望の環境用のBoxを指定することで簡単にVagrantで環境構築が出来てしまう･･･！
EC2でいうAMIのようなものだろうか･･･？

今回はCentOS7環境を構築するので、[VagrantBoxリストページ](http://www.vagrantbox.es/)から["CentOS7.0 x86_64 minimal"](https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box)をDLすることにします。

DLしたら先に作成しておいたディレクトリにつっこみます。

## 3.2. boxをVagrantに追加する

### 3.2.1. コマンドプロンプトを起動する
### 3.2.2. cdコマンドでboxのあるディレクトリに移動

私の場合は以下の通り。

```text:コマンドプロンプト
cd C:\Users\hoge\Desktop\work\vagrant\box
```

### 3.2.3. Vagrantにboxを追加

```text:コマンドプロンプト
vagrant box add {BOX_NAME} {BOX_FILE}
```

"{BOX_NAME}"は登録する際の名前なので、あとで登録済みboxの一覧を見るときにわかれば何でも良いと思います。

私の場合は以下の通り。

```text:コマンドプロンプト
vagrant box add centos7.0 ./centos7.box
```

### 3.2.4. Vagrant Initする

現在いる場所をVagrant環境にする為の初期化をします。
初期化後、カレントディレクトリに"Vagrantfile"ファイルができます。
設定ファイルのようなものだとお考えください。

コマンドの引数には{BOX_NAME}を指定します。
私の場合は以下の通り。

```text:コマンドプロンプト
vagrant init centos7.0
```

### 3.2.5. Vagrantfileを編集する

Init後に出来たVagrantfileをテキストエディタで開きます。

まず、以下のComment部分をUnCommentします。

```text:Vagrantfile
 config.vm.network "private_network", ip: "192.168.33.10"
```

次に仮想環境に割り当てるメモリサイズを以下のように設定します。
私は2048MBを割り当てました。

```text:Vagrantfile
  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  
     vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
```

### 3.2.6. 仮想環境を起動する

長いようで簡単にここまでこれたはず！
以下のコマンドでいよいよ環境を起動します。

```text:コマンドプロンプト
vagrant up
```

```text:コマンドプロンプト(ログ)
C:\Users\hoge\Desktop\work\vagrant\box>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7.0'...
(... snip ...)
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
    default: /vagrant => C:/Users/hoge/Desktop/work/vagrant/box
Failed to mount folders in Linux guest. This is usually because
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` vagrant /vagrant

The error output from the last command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device
```

多少のFailedやerrorという文字には目を瞑りましょう。きっと大丈夫。

```
※ここで"`gsub': invalid byte sequence in utf-8 (argumenterror)"のようなエラーが出る場合
　コマンドプロンプトの文字コードがUTF-8になっている可能性が高いです。
　SJIS等に戻すか、コマンドプロンプトではない別のシェル使いましょう。
```

# 4. SSHクライアントの導入

さて、仮想環境はできましたがログインする手段がWindowsにはデフォルトではありません。
いろいろ方法はありますが、ここではSSHクライアント"teraterm"を導入して使うようにします。
[このへん](http://sourceforge.jp/projects/ttssh2/)から適当に導入してください。

# 5. 仮想環境にログインする

準備が整ったので、ゲストOS側に入ってみたいと思います。
teratermを起動したら以下のように設定して"OK"ボタンを押下します。

ホスト"192.168.33.10"指定で、SSH、TCPポート22を指定して"OK"を押下します。
ユーザ名とパスフレーズはいずれも"vagrant"です。

仮想環境を落とす場合は以下のコマンドをコマンドプロンプトで実行してください。
(もちろんVagrantfile等がある場所で！)

```text:コマンドプロンプト
vagrant halt
```

以上で導入は完了です。
[こちら](http://qiita.com/kenichi_nakamura/items/adf7fe27ac4257d4c37a)では、この後にKibana4を導入しますので興味のある方は是非！