はじめてVagrantでローカル開発環境の構築した(Mac向け)

# 目的 (2017/3/1 一部修正)

OSS(オープンソースソフトウェア)のVagrantを用いて、仮想環境上に仮想マシンを構築、利用できるようにする作業を自動化する。



##開発環境
* OS Ⅹ EL Capitan
* Vitualbox(5.1.0)
* Vagrant(1.9.1)
* Box(仮想マシンのテンプレート)  
  今回は...　bento/centos-6.8  
  [https://atlas.hashicorp.com/boxes/search?utf8=✓&sort=&provider=&q=bento](https://atlas.hashicorp.com/boxes/search?utf8=✓&sort=&provider=&q=bento)    
  ※BoxはVagrantCloudなどでも入手できる

##Vagrantに関連する用語
####_Boxファイル_
仮想マシンを起動する際のイメージファイル

####_Vagrantfile_
仮想マシンのアドレス情報などの設定を記述するファイル




##1.VirtualBoxとVagrantのインストール
brewを使いインストールする。

```
$ brew update  
$ brew install Caskroom/cask/virtualbox Caskroom/cask/vagrant
```

インストールされているか確認

```
$ vagrant -v  
$ virtualbox
```

##2.Boxファイルのインストール

Boxファイルのインストール  
(vagrant box add BOX名 URL)

```
$ vagrant box add bento/centos-6.8
```  

インストールされているBoxの確認  

```
$ vagrant box list
```

追加したBoxの保存場所  
ユーザーディレクトリ/.vagrant.d/boxes/box名/
##3.準備
  
vagrantのプラグインを導入  
(自分の環境の VirtualBox のバージョンと Box のバージョンが異なる場合に、VirtualBox のバージョンに合わせて最新化するコマンド??)  

```
$ vagrant plugin install vagrant-vbguest
```

ホームディレクトリに移動  

```
$ cd
```


Vagrantで作成した仮想マシンを管理するためのフォルダ(名前は任意)を作る。  
※今後は、このフォルダ内で仮想マシンを作っていく

```
$ mkdir MyVagrant
```

MyVagrantに移動する  

```
$ cd MyVagrant
```


仮想マシンを作るフォルダ(名前は任意)を作る  

```
$ mkdir MyCentOS
```

MyCentOSに移動する  

```
$ cd MyCentOS
```

##4.Vagrantfile作成

仮想マシン設定用のVagrantfileを作る 

 
vagrant init Box名

```
$ vagrant init bento/centos-6.8
```


Vagrantfileに以下を追記して仮想マシンにIPアドレスを設定する  

--------
今回はserver、clientの2つのゲストOS作成のため  
ホストOSとゲストOS間(192.168.33.???)と2つのゲストOS間(192.168.55.???)のIPアドレスを2つずつ設定する 
 
＊仮想マシンが立ち上がったらpingで確認することを忘れずに！

-----------


```
   config.vm.define "server" do |server|
      server.vm.hostname = "server"
      server.vm.network "private_network", ip: "192.168.55.10", virtualbox__intnet: "in1"
      server.vm.network "private_network", ip: "192.168.33.10"
   end
   config.vm.define "client" do |client|
      client.vm.hostname = "client"
      client.vm.network "private_network", ip: "192.168.55.11", virtualbox__intnet: "in1"
      client.vm.network "private_network", ip: "192.168.33.11"
   end
```


さらにVagrantfileに以下を追記(Vitual boxのケーブル接続設定)  
※これを記述しないと、後のvagrant up時にprivate keyという項目でエラーが出ます。

```
config.vm.provider "virtualbox" do |vb|  
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]  
end
```

##5.仮想マシンの操作

仮想マシンを起動する（少し時間かかる）  

```
$ vagrant up
```

仮想マシンの状態を確認する (runningなら起動状態)
 
```
$ vagrant status
```


仮想マシンにログイン

```
$ vagrant ssh server
または
$ vagrant ssh client
```

------

開発などなんやかんや、、、、

------



仮想マシンからログアウト

```
$ exit
```

仮想マシンのシャットダウン

```
$ vagrant halt
```

##6.(任意)仮想マシンの設定

OSを最新状態にアップデート（時間かかる）  

```
$ sudo yum -y update
```


※別記事にて、Ansibleによる環境構築もやっています！
[http://qiita.com/nl0_blu/items/428656c1147775faefd1](http://qiita.com/nl0_blu/items/428656c1147775faefd1)

##(補足)仮想マシンの操作
* `vagrant up` 仮想マシンの起動。vagrantfileのあるディレクトリ内で実行  
* `vagrant halt` 仮想マシンのシャットダウン
* `vagrant suspend` 仮想マシンの一時停止  
* `vagrant resume` 仮想マシンの一時停止から復帰  
* `vagrant reload` 仮想マシンの再起動  
* `vagrant destroy` 仮想マシンの削除(boxは消えない)  
* `vagrant status` 仮想マシンのステータス表示  
* `vagrant ssh` 仮想マシンにログイン  
* `vagrant ssh-config` sshログイン時の設定確認
* `vagrant version` バージョン確認+最新バージョンの表示  
* `vagrant -h` ヘルプ

##参考
[http://dotinstall.com/lessons/basic_localdev_mac_v2](http://dotinstall.com/lessons/basic_localdev_mac_v2)