Windows8でCentOS6.8のvagrantのboxファイルを作成する

# 概要
※ テスト環境用の設定で、セキュリティは考慮していません。
※　画像は6.7のときのものがそのまま使われています。適宜6.8に読み替えてください

* 以下実施
    * VirtualBoxでISOからCentOS6.8をインストールする
    * vagrantのboxファイルを作成する


# 事前準備
* OS
    * Windows8.1 Pro
* VirtualBoxのインストール
    * [公式](https://www.virtualbox.org/wiki/Downloads)のパッケージを入れます
* vagrantのインストール
    * [公式](https://www.vagrantup.com/)のパッケージを入れます
* ISO
    * [CentOS-6.8-x86_64-minimal.iso](http://ftp.nara.wide.ad.jp/pub/Linux/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso)
        * ローカルにダウンロードしておく

※ いろんな入れ方がありますがバージョンが古かったりするので公式から入れる事推奨

# 作業内容

## 仮想マシンの新規作成

新規を押す
![a.png](https://qiita-image-store.s3.amazonaws.com/0/20474/98a87516-89e7-f9a8-8ae5-083bf891df95.png)

名前を入力して次へを押す。(64-bitが選ばない場合は備考を参照)
![a.png](https://qiita-image-store.s3.amazonaws.com/0/20474/09e9ae6b-740a-9695-5cbc-7ed9c659965d.png)

メモリを割り当て(2GB)次へを押す
![a.png](https://qiita-image-store.s3.amazonaws.com/0/20474/76e364ce-85a6-a94e-87b9-6486e66bc9cf.png)

「仮想ハードディスクを作成する」を選択し、作成を押す
![b.png](https://qiita-image-store.s3.amazonaws.com/0/20474/c6c03be8-f34f-8ec8-b840-45de00f0c297.png)

VMDKを選択し、次へを押す (デフォルトのVDIでも可)
![c.png](https://qiita-image-store.s3.amazonaws.com/0/20474/ca8f79e4-601f-0812-6d22-d2742184bd56.png)

可変サイズを選択し、次へを押す
![01.png](https://qiita-image-store.s3.amazonaws.com/0/20474/d78d9821-a58e-cc65-cd3f-9a5639839966.png)


ディスクのサイズを割り当て(20GB)作成を押す
![e.png](https://qiita-image-store.s3.amazonaws.com/0/20474/1083ae8b-ca08-d256-fc32-a3702b221532.png)

仮想ハードディスクが作成される
![f.png](https://qiita-image-store.s3.amazonaws.com/0/20474/18e0d005-1fe1-af3b-9153-94027fa7639c.png)

ストレージを押す
![g.png](https://qiita-image-store.s3.amazonaws.com/0/20474/0d5eead8-968c-b98f-1a77-309611224027.png)

コントローラIDEを右クリックし、光学ドライブを追加を押す
![h.png](https://qiita-image-store.s3.amazonaws.com/0/20474/ebc00584-5675-2ba6-8700-79731ce97849.png)

ディスクを選択を押す
![i.png](https://qiita-image-store.s3.amazonaws.com/0/20474/137a6b68-d3bd-6483-b514-266cd5c43e39.png)

ISOを選んで開くを押す
![j.png](https://qiita-image-store.s3.amazonaws.com/0/20474/e2e6cd82-7f9e-7e49-af22-50edc41e932e.png)

OKを押す
![k.png](https://qiita-image-store.s3.amazonaws.com/0/20474/bcf7e363-fd57-0ca2-26e5-8bc1184910dd.png)

* CentOS7の時は以下参照
    * [VirtualBox CentOS7.2 64bitでNAT、ホストオンリーアダプターを使用](http://www.kakiro-web.com/memo/virtualbox-create-virtual-machine-2.html)
    * [CentOS7.2 64bit インストール時にVirtualBoxでNAT、ホストオンリーアダプターを使用する場合のネットワークの設定](http://www.kakiro-web.com/memo/centos-network-setting-nat-hostonly.html)
    * ipv4.dnsはPC本体の/etc/resolv.conを設定すれば良い

ネットワークを押してアダプター1を以下のように設定し、「ポートフォワーディング」を押す
![02.png](https://qiita-image-store.s3.amazonaws.com/0/20474/5973ab30-590e-9b40-d71d-c7c50f2e3d39.png)

ポートフォワーディングの設定を入れてOKを押す
![01.png](https://qiita-image-store.s3.amazonaws.com/0/20474/8029892a-1333-d5dd-5c42-3f5dbaada2f3.png)

「USBコントローラの有効化」のチェックを外す
![03.png](https://qiita-image-store.s3.amazonaws.com/0/20474/44131138-7512-0c14-79c4-51f0079006cd.png)

「オーディオの有効化」のチェックを外してOKを押す
![05.png](https://qiita-image-store.s3.amazonaws.com/0/20474/afc68471-fac8-1d44-184c-39e6d280f950.png)


起動を押す
![l.png](https://qiita-image-store.s3.amazonaws.com/0/20474/931dbdee-77f2-d2fa-029b-000bf84f830d.png)

CentOSの起動画面が表示される
![m.png](https://qiita-image-store.s3.amazonaws.com/0/20474/dc148435-aefc-e8bf-9a24-36dc893311c7.png)


## CentOS6.8のインストール

Skipを押す
![01.png](https://qiita-image-store.s3.amazonaws.com/0/20474/cca4d4aa-351c-7b27-b69d-dcfe42984839.png)

NEXTを押す
![02.png](https://qiita-image-store.s3.amazonaws.com/0/20474/b50e4d89-d97d-3ad8-e564-0d1459737c7e.png)

日本語を押してNEXTを押す
![06.png](https://qiita-image-store.s3.amazonaws.com/0/20474/75d7ca56-a6ef-c64d-abb4-c3ab7c07aa77.png)

日本語を押して次を押す
![07.png](https://qiita-image-store.s3.amazonaws.com/0/20474/69f63c6c-85e1-edf2-a986-e9ea38290ac2.png)

基本ストレージデバイスを選択して次を押す
![08.png](https://qiita-image-store.s3.amazonaws.com/0/20474/8dd40b00-3c6f-38bf-2f83-ed537fce47a8.png)

はい。含まれていません。どのようなデータであっても破棄してください。を押す
![09.png](https://qiita-image-store.s3.amazonaws.com/0/20474/48a05122-482b-e098-70b5-95007bb2de7c.png)

Hostnameを入力して次を押す
![07.png](https://qiita-image-store.s3.amazonaws.com/0/20474/e4debee8-7117-b21b-c5cb-fba387f988ca.png)

アジア/東京を選んで次を押す
![11.png](https://qiita-image-store.s3.amazonaws.com/0/20474/76eeab11-8f90-cea5-a708-0b5636a9cc3a.png)

Rootパスワードを入力して次を押す
任意で問題ないが、一般的なvagrantのboxのRootパスワードは「vagrant」
![12.png](https://qiita-image-store.s3.amazonaws.com/0/20474/614c32a8-5f7a-17f6-e5a1-84d0c96ac0c0.png)

すべての領域を使用するを選択して次を押す
* ある程度以上の領域を作成する場合、デフォルトでは/に50GB、/homeに残りの領域が割り当てられるようになるので注意
    * この場合、「パーティションのレイアウトをレビューまたは修正する」から割り当てを修正する
![13.png](https://qiita-image-store.s3.amazonaws.com/0/20474/96ed5577-081e-0cc2-d555-8b3ca34d46b9.png)

変更をディスクに書き込むを押す
![14.png](https://qiita-image-store.s3.amazonaws.com/0/20474/02cbc7e0-4593-17a9-b904-2a370ee37532.png)

Minimalを選択し、次を押す
![15.png](https://qiita-image-store.s3.amazonaws.com/0/20474/5d58c720-975a-67df-5a64-8dfe52b789ae.png)

再起動を押す
![16.png](https://qiita-image-store.s3.amazonaws.com/0/20474/37716f75-cb0a-ae49-e5f8-3a28483bcaed.png)


## 初期設定

rootでログインする
![17.png](https://qiita-image-store.s3.amazonaws.com/0/20474/439dae11-3ada-33e3-8f7b-221cdf112179.png)

/etc/sysconfig/network-scripts/ifcfg-eth0を編集し、networkをrestartする

* HWADDRの行を削除
* UUIDの行を削除
* ONBOOTをyesに変更

![18.png](https://qiita-image-store.s3.amazonaws.com/0/20474/138eda83-e815-29a0-98a2-ff2ad02e161e.png)

ターミナルソフトでログインする。ここではTera Termを使用
![19.png](https://qiita-image-store.s3.amazonaws.com/0/20474/569ce037-c9ae-488e-1902-7d7499b03a28.png)

OKを押してVMに接続
![20.png](https://qiita-image-store.s3.amazonaws.com/0/20474/a768c27d-4386-e252-9178-78802a881776.png)


``` shell
### sshサービスが接続しようとしているホストのIPアドレスを逆引きしないようにする
# sed -i -e "s:^#UseDNS yes:UseDNS no:" /etc/ssh/sshd_config

### 設定反映
# service sshd restart

### sshdが自動で立ち上がるようにする
# chkconfig sshd on

### ネットワークインターフェース名とMACアドレスの関係設定をリセット
# ln -f -s /dev/null /etc/udev/rules.d/70-persistent-net.rules

### SELinuxを無効にする
# vi /etc/selinux/config
============================================================
SELINUX=disabled
============================================================

### 再起動
# reboot
```

再起動完了後再度接続し、以下設定

``` shell
### vagrantグループの作成
# groupadd vagrant

### vagrantユーザの作成
# useradd vagrant -g vagrant -G wheel

### パスワードの設定
# passwd vagrant

### sudo設定の追加
# echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

### ttyなしの sudo を許可
# sed -i -e "s:^.*requiretty:#Defaults requiretty:" /etc/sudoers

### vagrantユーザになる
# su - vagrant

### vagrant ユーザが公開鍵を使ってログインできるように鍵を設置
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ curl -L -o ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub
$ chmod 600 ~/.ssh/authorized_keys

### ipv6無効化
$ sudo vi /etc/modprobe.d/disable-ipv6.conf
============================================================
install ipv6 /bin/true
============================================================

### 一番下に追加
$ sudo vi /etc/sysctl.conf
============================================================
# ipv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
============================================================
$ sudo sysctl -p

### iptables無効化
$ sudo service iptables stop
$ sudo chkconfig iptables off
$ sudo service ip6tables stop
$ sudo chkconfig ip6tables off

### localeの設定
$ sudo vi /etc/sysconfig/i18n
============================================================
LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"
============================================================

### パッケージのアップデート
$ sudo yum update

### 基本的なソフトのインストール
$ sudo yum install make gcc-c++ wget git openssh-clients telnet traceroute perl patch tcpdump screen bind-utils strace sysstat lsof mailx zip bzip2 sudo

### 再起動
$ sudo reboot
```

VirtualBoxのコンソール画面から「Guest Additions CD イメージの挿入」を押す
![21.png](https://qiita-image-store.s3.amazonaws.com/0/20474/84eddaec-c46f-7f19-1b01-b96a5d2c5bd3.png)


``` shell
### ※mountできない場合はVirtual Boxの「ストレージ」->「コントローラIDE」で空の光学ドライブが一つある状態にして再度やってみる
# yum install kernel-devel
# export KERN_DIR=/usr/src/kernels/`uname -r`
# mount -t iso9660 /dev/cdrom /mnt

### VirtualBox の Guest Additions をインストール。OpenGLのエラーはスルー
# sh /mnt/VBoxLinuxAdditions.run

### シャットダウン
# sudo shutdown -h now
```

### boxの作成と追加

VirtualBox VMs配下にある作成したVMのフォルダをShifキーを押しながら右クリックし、コマンドウィンドウでここを開くを押す

![22.png](https://qiita-image-store.s3.amazonaws.com/0/20474/839a3fd8-de7c-2fae-59d8-2cb1e85b97c1.png)


``` shell
### 共有ディレクトリを利用するためのプラグインインストール
> vagrant plugin install vagrant-vbguest

### boxの作成。ここではvm名はnode1, box名はcentos67
> vagrant package --base (vm名) --output (box名).box

### boxの追加
> vagrant box add (box名) (box名).box
```
![23.png](https://qiita-image-store.s3.amazonaws.com/0/20474/7f31135b-4b24-6372-5203-7abefdb01560.png)

### VMの起動

適当なフォルダにVagrantfileを作成し、upする

``` shell
### Windowsのテキストエディタを開いて以下の設定を書いて保存する
> notepad Vagrantfile
============================================================
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define :(vm名) do |node|
    node.vm.box = "(box名)"
    node.vm.network :private_network, ip:"192.168.33.11"
  end
end
============================================================

> vagrant up (vm名)
```

# 確認&事後作業

ターミナルから設定したIPアドレス(ここでは192.168.33.11)でsshできることを確認する



# 参考
* [Vagrant の VirtualBox 用 Base Box ファイルを手動で作ってみる](http://momijiame.tumblr.com/post/77460699382/vagrant-%E3%81%AE-virtualbox-%E7%94%A8-base-box-%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E6%89%8B%E5%8B%95%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%8B)
* 32bitしか選べない場合はHyper-Vを無効にする
    * [VirtualBoxで64ビット版OSをインストールできない場合の対処方法](http://little-beans.net/howto/virtualbox-64bit-os/)