初心者がVagrantを使ってみる。

#Vagrant(ベイグラント)とは

 OSS(オープンソースソフトウェア)で、仮想環境上に仮想マシンを構築、利用できるようにセットアップを行うことができる開発環境自動構築ツールです。

つまり、一つ一つ設定を入力しないで、簡単に構築できる優れものです。
（私は`さくらのVPS`で作って壊して遊んでましたが時間がかかって大変でしたが、Vagrantは簡単で扱いやすいです。）

ただし、仮想マシンにNginxを自動でインストールさせたい場合などは、Ansible、Chef、シェルスクリプトなどといったツールを使います。

##開発環境

OS X El capitan(v10,11,3)
HomeBrew導入済み

##導入するもの

virtualbox(5.0.16)
vagrant(1.8.1)

ただし、virtualbox(5.0.16)が新しいためか、一部不具合が出る可能性があるでご了承ください。

ちなみにLinuxやWindowsも起動できますのでいいですね。

#Vagrantで使う用語

##Boxファイル

仮想マシンを起動するときにベースとなるイメージファイルです。

##Vagrantfile

仮想マシンのスペックなど、仮想マシンの構成をこのファイルに記述します。

#VirtualBoxとVagrantのインストール

brewを使いインストールします。

```
$ brew update
$ brew install Caskroom/cask/virtualbox Caskroom/cask/vagrant
```
インストールされている確認

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

#BOXファイルのインストール編

以下のコマンドでインストールできます。

```
$ vagrant box add BOX名 URL
```

##BOX名
BOX名は自由に決められます。ただし、重複はできません。(同じ名前のBOXを２個以上作れません。)

##URL

Boxファイルが配置されているURLまたはファイルパスを指定する。
Boxは自分で作成することができますが、公開されているものを使った方が楽なのでそれを使います。

URLは例えば、http://www.vagrantbox.es に書いてあるURLやChef社のhttps://atlas.hashicorp.com/bento/ などから指定できます。

##Boxファイルインストール(centos7.1)

今回は前者のhttp://www.vagrantbox.es でCentOS 7.1をインストールしてみます。

時間がかかるのでご了承ください。

```
$ vagrant box add centos7.1 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7.1' (v0) for provider:
    box: Downloading: https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
==> box: Successfully added box 'centos7.1' (v0) for 'virtualbox'!
```

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

```
$ vagrant box list
bento/centos-6.7   (parallels, 2.2.3)
bento/centos-6.7   (virtualbox, 2.2.3)
bento/centos-7.1   (parallels, 2.2.2)
bento/centos-7.1   (virtualbox, 2.2.2)
bento/centos-7.2   (parallels, 2.2.3)
bento/centos-7.2   (virtualbox, 2.2.3)
bento/ubuntu-14.04 (parallels, 2.2.3)
bento/ubuntu-14.04 (virtualbox, 2.2.3)
bento/ubuntu-15.04 (parallels, 2.2.3)
bento/ubuntu-15.04 (virtualbox, 2.2.3)
centos7.1          (virtualbox, 0)
```

私の場合はbentoでインストールしているものがありますが、初めてインストールしている場合は、`centos7.1          (virtualbox, 0)`だけが表示されています。

##Boxファイルの削除

```
vagrant box remove BOX名
```

#Vagrantfile作成編

まず作業用ディレクトリを作成、移動します。

```
$ mkdir ~/vagratsample
$ cd vagrantsample
```

Vagrant fileを生成するコマンド

```
$ vagrant init BOX名
```

今回は

```
$ vagrant init centos7.1
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
```

vagrantfileが作成されているか確認

```
$ ls
Vagrant file
```

`cat`や`vim`や`less`コマンド等で内容を確認してみます。

```
less Vagrantfile
```

中身はRubyで書かれていますね。
ある行に`config.vm.box = "centos7.1"`と書かれていますね。

#vagrantで仮想マシンの起動、停止、削除、確認

##vagrant up（仮想マシン起動）

`~/vagrantsample`に移動し

```
$ vagrant up
```

いろいろ表示されますが、処理が終了したら仮想マシンが起動しているか確認します。

```
$ vagrant status
running (virtualbox)
```

と表示されていれば起動しています。

他にはGUIでvirtualboxを起動し確認することができます。

##vagrant ssh(SSH接続)

上で起動した場合、操作をするにはvirtualboxのGUIで操作しなければなりません。
そこでSSHで接続することでCUIで操作できるようにします。

仮想マシンが起動している状態で

```
$ vagrant ssh
Last login: Thu Mar 10 11:48:52 2016
[vagrant@localhost ~]$
```

接続できました。

SSH接続を抜け出すには`exit`を使います。

```
[vagrant@localhost ~]$ exit
ログアウト
Connection to 127.0.0.1 closed.
$
```

ただし、仮想マシンは起動したままです。

##vagrant halt(仮想マシン停止)

起動している状態で

```
$ vagrant halt
==> default: Attempting graceful shutdown of VM...
```

となり、停止します。

##vagrant destroy(仮想マシン削除)

```
$ vagrant destory
```

とすれば削除されます。

##vagrant status(仮想マシンの状態を確認)

現在、起動しているのか、停止しているのか、そもそも作成されているのか確認するコマンドです。

```
$ vagrant status
```

次書く内容は,Nginxなどをシェルスクリプトを使って導入する手順を書きたいと思います。