Vagrant2.0.3を使ったCentOS6.9の環境構築

# Vagrant2.0.3を使ったCentOS6.9の環境構築

Vagrantは最近よく使うのですが、毎回CentOS6やCentOS7の環境を構築して、そのあと例えばApache入れてみたり、MySQL入れてみたりなどの本来のやりたいことに取り掛かります。
その際、毎回毎回やっている **yum -y update** とか、いくつかやっておくやつを忘れそうになるので、メモとして残します。

## 環境まとめ
|＃|環境|概要|
|:--|:--|:--|
|1|ホストOS<br>（クライアントOS）|Windows 10|
|2|ゲストIP|192.168.33.10|
|3|Vagrant|2.0.3<br>*※2018年3月31日時点の最新*|
|4|Oracle VM VirtualBox|5.2.8<br>*※2018年3月31日時点の最新*|
|5|CentOS|6.9<br>利用しているboxはhttps://app.vagrantup.com/centos/boxes/6|
|6|SSHクライアント|TeraTerm|

## VagrantによるCentOS6の環境セットアップ

### centos/6 のboxイメージを利用する

管理者権限でコマンドプロンプトを起動し、カレントディレクトリを任意のディレクトリに移動してから、以下のコマンドを実行します。
※ここからしばらくはWindows環境（ホストOS上）のコマンドプロンプトやテキストエディタを利用した手順です。

```shell
vagrant init centos/6
```

### Vagrantfileの修正

vagrant initしたフォルダに「Vagrantfile」というファイルが生成されるので、以下のように修正します。
メモリのサイズを2GBに変更していますが、デフォルトだとおよそ500MBが割り当てられ、非常に小さいため、最初から設定するようにしています。

```ruby
Vagrant.configure("2") do |config|
  config.vm.box = "centos/6"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "2048"]
  end
end
```

### vagrant upでCentOS6を起動

最初の起動には少し時間が掛かります。

```shell
vagrant up
```

### TeraTermでの接続

vagrant sshコマンドを実行して接続するほうが簡単ですが、一応TeraTermで接続します。

* TeraTermを起動
* ［ホスト］に **192.168.33.10** と入力しOKボタンを押下
<img src="https://qiita-image-store.s3.amazonaws.com/0/246556/df9744f0-b99b-ce3b-1f09-d40be2dede5d.png" width="60%" height="60%" title="TeraTerm接続1">
* ユーザ名とパスフレーズに、それぞれ **vagrant** と入力しOKボタンを押下
* 上記の手順のままだとログインできず以下のように「秘密鍵」を求められる
<img src="https://qiita-image-store.s3.amazonaws.com/0/246556/22d637e2-911c-8b05-655e-6f15b8ffc53d.png" width="60%" height="60%" title="TeraTerm接続2">
* 例えば「C:\vagrant-work\centos6」でvagrant initしていた場合などは以下のディレクトリにある **private_key** というファイルを秘密鍵として指定する。  
C:\vagrant-work\centos6\.vagrant\machines\default\virtualbox
* この状態でユーザ名もパスフレーズも入力された状態でOKボタンを押下することでTeraTermでCentOS6へ接続できる。

*この辺の手順をつい忘れてしまうのでメモ*

### CentOSにvimを入れる

CentOS上でテキスト編集する際に **vim** を使いたいのでvimをインストールしておきます。
*以下のコマンドはTeraTerm上の操作*

```shell
sudo yum -y install vim
```
※私の場合は、このインストール処理時に「already installed and latest version」と言われたので、最近はデフォルトでインストール済みになっていることが多いのかもしれないです。

### CentOSのtimezoneをAsia/Tokyoに変更

TeraTermでCentOS6に接続した状態で、dateコマンドを発行すると、ローカルPCのシステム日時と異なる時間が返却されていることが分かる。
タイムゾーンがデフォルトだとUTCに設定されているため、これをAsia/Tokyoに変更する。
*以下のコマンドはTeraTerm上の操作*

```shell
sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
sudo vim /etc/sysconfig/clock
```

/etc/sysconfig/clockの中身は以下のように編集する。

```
ZONE="Asia/Tokyo"
```

### localeを日本に変更

localeコマンドを実行すると、LANG=en_US.UTF-8と出力され、日本になっていない。
これを日本に変更する。
*以下のコマンドはTeraTerm上の操作*

```shell
sudo vim /etc/sysconfig/i18n
```

修正内容

```
LANG="ja_JP.utf8"
SYSFONT="latarcyrheb-sun16"
```

修正した内容を反映する

```shell
. /etc/sysconfig/i18n
```

### yum管理の各種ソフトウェアをアップデート

*以下のコマンドはTeraTerm上の操作*

```shell
sudo yum -y update
```

### 秘密鍵によるSSH接続の設定変更（パスワードのみでログインできるように）

上記手順のままCentOS6の環境構築を進めると、以下ディレクトリ内にある「private_key」というファイルをTeraTermで接続時に指定する必要が出てきます。
C:\vagrant-work\centos6\.vagrant\machines\default\virtualbox\private_key  

面倒な場合は下記設定ファイルを修正することで、パスワードのみでSSH接続できるようになります。

```shell
sudo vim /etc/ssh/sshd_config
PasswordAuthentication yes  # ←修正箇所
```

### 開発環境として利用する場合、ファイアウォールを無効にしておきたいことがよくあるのでファイアウォールの無効

必要なければこの手順を省いて問題なし
*以下のコマンドはTeraTerm上の操作*

```shell
sudo chkconfig iptables off
```

以上でCentOS6の環境構築初期セットアップが完了です。
ここまで整ったら、あとはCentOS6上でやりたかったことをやっていく感じかと。