手軽にVagrant環境構築


## 環境

* Windows8.1(ホストPC)
* CentOS7(ゲストPC)
* Vagrant 1.6.5

```
補足：ゲストPCはCentOSのみならず、Ubuntuやscientificでも可能
```

## Vagrant設定

### １．VirtualBox,Vagrantのインストール
　※VirtualBox.exeまでのパスを環境変数に追加しておく。
　　⇒仮想環境を立ち上げる時にVBoxManegerがないって怒られる！
　※ホストPCの再起動を行うこと。(アップデート/再インストール時も)

### ２．仮想環境の準備
　仮想環境をまとめておく場所を決め、その中で今回作る環境用のディレクトリを作成。

```
  cd  ~/vagrant
  mkdir centos7
　cd  centos7
```

### ３．Vagrantfile の作成
　` vagrant init centos2 ` # vagrant init [仮想環境の独自名称]
　⇒ 現在のディレクトリ内にVagrantfileが作成されます。


### ４．Vagrantfile の編集
　` vi Vagrantfile ` # Vagrantfileを編集します。(エディタでもOK)

```lang:Vagrantfile

13|  config.vm.box = "[仮想環境の独自名称]"
14|  config.vm.box_url = "https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box"
　　　# BOXファイルの置き場所です。リンク切れになったりもするでしょうからローカルに落して指定してもいいと思いますし、
　　　# 先にVirtualfileのあるディレクトリ内で 『vagrant box add [仮想環境の独自名称] [BOXファイルへのパス]』 とコマンドを打つと
　　　# ここは自動で記入されます。
  |
  |  # ポート番号が競合しないように（不安なときはnetstatコマンドで調べてみるといいですね）
29|  config.vm.network "forwarded_port", guest: 80, host: 3001
  |
38|　config.ssh.forward_agent = true
  |
  |　# 共有フォルダの設定です。第一引数がホストPC,第二引数がゲストPCです。()
  |　# ホストPC側はVagrantfileのあるフォルダから見たパス、ゲストPC側はフルパスの方が良いとのこと
44|　config.vm.synced_folder "share_folder", "/home/share_folder" 
```

- BoxファイルのURLについて
1. [Vagrantbox.es](http://www.vagrantbox.es/)から探す。
　⇒一般的。
2. [Packer](https://www.packer.io/)をDL/準備しておく。
　⇒boxイメージをローカルに持っておき、仮想環境を作る時はDL先のディレクトリパスを指定する。
　　2014年12月時点でのPackerでは以下のboxイメージが用意されていました。
　　`centos-6.4/6.5/6.6/7.0、scientific-6.4/6.5/7.0、Ubuntu-12.04/12.04-docker/13.10/14.04`

### ５．仮想環境の構築
  ここでやっとの仮想環境の立ち上げです。
　`vagrant up `
　Box作成をしていなかった場合、VagrantfileにBoxへのパスを記載しているので一緒にやってくれます。
　` default: Successfully added box 'centos2' (v0) for 'virtualbox'! `
　と表示されればBox作成は成功です。

　そのあとにVagrantfileの設定に沿うように仮想環境の構築ログがポンポン出てきます。

　ここで、`Failed to mount folders in Linux guest.~~~`というエラーが吐かれると思いますが、
　vagrant の起動自体はできているはずです。ゲストOS側からマウントする作業を行わないと解決されないので
　そのまま先に進みましょう。

## SSH接続
　　`vagrant ssh`
　　rootに接続したい場合は、ログイン後に
　　`su root`
　　の、「パスワード：vagrant」で接続できます。
　　あれ？つながらない。というときは `vagrant status` で起動しているかチェックしてみてください。

## ファイル共有の設定
　`sudo /etc/init.d/vboxadd setup`
  ⇒ U/b/u/n/t/u/14.04の時はこういったコマンドは必要なかったと思うのですが・・・CentOSだからなのかな？(検索避け)
　　でもこれをしないと `vagrant up`をするたびにマウントしろと言われますので必要ですね。(マウントもできないでしょうし)
　　無事に済んだら、ゲストPCの再起動(再構築?)が必要です。 Ctrl + D  や `logout` コマンドで一旦抜け出し、ホストPCから
　` vagrant reload `
　マウントがうまくいけば一番下のあたりに 『 ゲストOSの共有フォルダ⇒ホストPCの共有フォルダ 』というログが乗っているはずです。

```
補足：ここでホストPC側の共有フォルダにファイルを置いてみて、ssh接続後にホストPCの共有フォルダを見てみて下さい。
　　　同じファイルが存在してればOK
```

あとは自由に開発環境を整えるといいかと思います。
以下、小ネタ集。

# 小ネタ

## VirtualBoxから開く
```Vagrantfile
# 49行目辺りのコメントアウトを外す。
  config.vm.provider "virtualbox" do |vb|
    # Don't boot with headless mode
    vb.gui = true
  
   # Use VBoxManage to customize the VM. For example to change memory:
   # vb.customize ["modifyvm", :id, "--memory", "1024"]
  end

```
GUIの設定をしていなければCUIでしか操作できないと思います。
そして日本のBOXを使っていなかったら、キーボードの設定を変更する必要があります。

## キーボードの設定を日本用に
/etc/sysconfig/keyboard　のファイルを以下の通りに修正し更新。

```
KEYTABLE="jp106"
MODEL="jp106"
LAYOUT="jp"
KEYBOARDTYPE="pc"
```
この後、 `reboot` で適応。
[参考サイト](http://qiita.com/yoshiken/items/b06a97dd8958f3a6dd09)

## 言語設定を日本語(又は英語)に
/etc/sysconfig/i18n　のファイルの「LANG」を以下の通りに修正し更新

```
# 日本語の場合(恐ろしく文字化けしてしまったので英語の方がオススメです。)
LANG="ja_JP.eucJP"
# 英語の場合
LANG="en_US.UTF-8"
```
この後、 `reboot` で適応。
[参考サイト](http://nosa.cocolog-nifty.com/sanonosa/2005/04/linux_b2f8.html)

## GUIの設定
ゲストOS側で以下のコマンドを打つ。

```
# 必要なパッケージのインスコ
sudo yum -y groupinstall "X Window System" "Japanese Support"
# 標準、GUIで起動するように設定
sudo sed -i.bak -e "s/id:[0-6]:initdefault:/id:5:initdefault:/" /etc/inittab
```
ホストPCに戻り、`vagrant halt`
Vagrantfileに一行追加。

```Vagrantfile
  config.box_url = config.vm.box_url = "https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box"
  config.ssh.forward_x11 = true # 追記(!)
```
あとはVagrantの起動(`vagrant up`)を行って終了。
[参考サイト](http://momijiame.tumblr.com/post/71207485722/vagrant-vm-gui-x11)

**(！)** X Serverが必要になります。
　[Windowsの方向けの参考サイト](http://orebibou.com/2015/02/teratermでsshのx11フォワーディング機能を利用する/)
　[OS Xの方向けの参考サイト](http://macperson.net/mac-x11-xquartz/)



都度、更新予定です。