CentOS7.4のvagrantbox作成


## はじめに
CentOS7のvagrantboxを作成したときの備忘録。
なお、以下、参考URLとほぼほぼ同じ内容になります。

[Vagrant box 作成手順(CentOS 6.7)](https://qiita.com/KisaragiZin/items/64b664c8b20ea39a6cd1 "Qiita")

[CentOS7の綺麗なboxを自作する](https://qiita.com/moonphase/items/6dde0c6cb9b5e8cb64f7 "Qitta")


## 環境情報
今回の作業環境は以下の通りです。

* Windows 10 (64bit / Home)
* VirtualBox 5.26
* Vagrant 2.0.2

## 準備したISOファイル

* CentOS-7-x86_64-DVD-1708.iso

## 仮想マシンの作成
VirtualBoxでベースになる仮想マシンを作成

1.メニューから「仮想マシン」->「新規」を選択

2.名前とオペレーティングシステム、メモリーサイズ、ハードディスクに次の内容を入力し`作成ボタン`を押す

|項目|設定内容|
|:--|:--|
|名前|CentOS-7.4-x86_64 ※任意|
|タイプ|Linux|
|バージョン|Red Hat (64-bit)|
|メモリーサイズ|2048MB|
|ハードディスク|仮想ハードディスクを作成する|


3.ファイルの場所、ファイルサイズ、ハードディスクのファイルタイプ、物理ハードディスクにあるストレージに次の内容を入力し`作成ボタン`を押す

|項目|設定内容|
|:--|:--|
|ハードディスクのファイルタイプ|VDI (VirtualBox Disk Image)|
|物理ハードディスクにあるストレージ|可変サイズ|
|ファイルの場所|CentOS-7.4-x86_64　※デフォルト値のまま|
|ファイルサイズ|20.33GB ※任意|

## 仮想マシンの初期設定

仮想マシンの不要なハードウエアを無効にします。

1.仮想マシン`CentOS-7.4-x86_64`を右クリックし`設定`を選択

2.`システム`タブを開き、`起動順序`にある`フロッピー`のチェックを外す

3.`オーディオ`タブを開き、`オーディオを有効化`のチェックを外す

4.`USB`タブを開き、`USBコントローラーを有効化`のチェックを外す

5.`OK`を押す

## ポートフォワーディングの設定

1.仮想マシン`CentOS-7.4-x86_64`を右クリックし`設定`を選択

2.`ネットワーク`タブを開き、`アダプター 1`にある`高度`をクリックし、`ポートフォワーディング`を押す

3.右にある`+`を押し、名前に`ssh`、ホストIPに`127.0.0.1`、ホストポートに`2222`、ゲストポートに`22`を設定し`OK`を押す

4.`OK`を押す


## 仮想マシンにCentOS7のインストールメディアを設定し起動する

仮想マシンにCentOS7のインストールメディアを設定し起動します。

1.仮想マシン`CentOS-7.4-x86_64`を右クリックし`設定`を選択

2.`ストレージ`タブを開き、`コントローラー: IDE`にぶら下がっている`空`を選択

3.`光学ドライブ`の右にある`CDマークのアイコン`をクリックし、`仮想光学ディスク・ファイル`を選択

4.予めダウンロード済みの`CentOS-7-x86_64-DVD-1708.iso`を選択

5.`OK`を押す

6.仮想マシン`CentOS-7.4-x86_64`を右クリックし`起動`->`通常起動`を選択

## CentOS7のインストール

1.`Install CentOS 7`を選択

2.インストール時に使用する言語で`日本語`を選択

3.`システム`の`インストール先`をクリックし、ファイルシステムを好みのレイアウトに変更する。今回は何も設定せずに`完了`を押下。

4.インストールを開始する。なお、特に設定をしないと以下の状態。

|項目|設定内容|
|:--|:--|
|日付と時刻|アジア/東京 タイムゾーン|
|キーボード|日本語|
|言語サポート|日本語|
|インストールソース|ローカルメディア|
|ソフトウェアの選択|最小限のインストール|
|KDUMP|有効|
|ネットワークとホスト名|接続していません|
|SECURITY POLICY|プロファイルが選択されていません|

5.インストール中に、ROOTパスワードを設定する。パスワードは`vagrant`とする。

6.`再起動`を行う。

## SELinuxの無効化

```
# setenforce 0
# sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
```

## ネットワークの起動設定

1.インタフェース名の確認

```
# nmcli c s
NAME    UUID                                  TYPE            DEVICE
enp0s3  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  802-3-ethernet  --
```

2.ONBOOTをyesにする、と同時にネットワークにもDHCPで接続される。

```
# nmcli c m enp0s3 connection.autoconnect yes
```

## vagrantユーザの追加

ユーザ`vagrant`を作成し、パスワードを`vagrant`とする。
sudoersの設定も行う。

```
# groupadd -g 500 vagrant
# useradd -g vagrant -u 500 vagrant
# passwd vagrant
※パスワードは「vagrant」とする

# vi /etc/sudoers.d/vagrant
vagrant ALL=(ALL) NOPASSWD: ALL
```
## sshでログイン

ここからはターミナルソフトで接続して作業を行う。

### ログイン情報

|項目|値|
|:--|:--|
|ホスト|127.0.0.1|
|ポート|2222|
|ユーザ|vagrant|
|パスワード|vagrant|

## Vagrant sshの設定

```
$ install -m 0700 -d $HOME/.ssh
$ echo "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ==" > $HOME/.ssh/authorized_keys
$ chmod 600 $HOME/.ssh/authorized_keys
```


## GuestAdditionsのインストール

### GuestAdditionsインストール準備

```
$ sudo yum -y install epel-release
$ sudo yum -y install bzip2 gcc make kernel-devel kernel kernel-headers dkms gcc-c++
$ sudo reboot

```



### Guest Addions CD imageのセット

VirtualBoxのゲストコンソールウインドウをアクティブにした際のメニュー`デバイス`から`Insert Guest Additions CD イメージの挿入`を選択

### GuestAdditionsのインストール

ターミナルに戻り、次のコマンドを実行する。

```
$ sudo mount -r /dev/cdrom /mnt
$ sudo /mnt/VBoxLinuxAdditions.run
```

### Guest Addions CDのアンマウント

```
$ sudo umount /mnt
```

インストール完了後、仮想マシンのメニューから、「デバイス」⇒「光学ドライブ」⇒「仮想ドライブからディスクを除去」を選択します。

## ボックスサイズの最小化

不要なものを消します。
ddしてrmするのは、ボックスを小さくするおまじない。

```
$ sudo rm /root/.bash_history
$ sudo yum clean all
$ sudo rm -fr /var/log/*
$ sudo rm -fr /tmp/*
$ sudo dd if=/dev/zero of=/0 bs=4k
$ sudo rm /0
$ history -c
```

## シャットダウン

```
$ sudo shutdown -h now
```

## boxの作成

コマンドプロンプトを起動します。

```
# box 作成用のフォルダ(任意)に移動します。
> cd xxxx(box 作成用のフォルダ)

# box を作成します。
# --base：作成対象の仮想マシン名、--output：出力 box ファイル名
> vagrant package --base CentOS-7.4-x86_64 --output CentOS-7.4-x86_64.box
==> CentOS-7.4-x86_64: Exporting VM...
==> CentOS-7.4-x86_64: Compressing package to: C:/xxxx/CentOS-7.4-x86_64.box

# 作成した box ファイルを確認します。
> dir
...
YYYY/MM/DD  hh:mm       671,008,648 CentOS-7.4-x86_64.box
...
```

## 作成した box の動作確認


```bash:boxの起動確認
# 作成した box を vagrant に登録します。
# --name：vagrant への登録名、xxxx.box：作成した box ファイル名(パス)
> vagrant box add --name CentOS-7.4-x86_64 CentOS-7.4-x86_64.box

# 登録した box を確認します。
> vagrant box list
CentOS-7.4-x86_64   (virtualbox, 0)

# Vagrantfile を作成します。
> vagrant init CentOS-7.4-x86_64

# box を起動します。
> vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'CentOS-7.4-x86_64'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: CentOS-74_default_1526565802116_2360
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default:
    default: Vagrant insecure key detected. Vagrant will automatically replace
    default: this with a newly generated keypair for better security.
    default:
    default: Inserting generated public key within guest...
    default: Removing insecure key from the guest if it's present...
    default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
    default: /vagrant => C:/xxxxxxxx/CentOS-7.4



# 起動した box に ssh で接続します。
> vagrant ssh

```

以上になります。


----

■参考URL

[Vagrant box 作成手順(CentOS 6.7)](https://qiita.com/KisaragiZin/items/64b664c8b20ea39a6cd1 "Qiita")

[CentOS7の綺麗なboxを自作する](https://qiita.com/moonphase/items/6dde0c6cb9b5e8cb64f7 "Qitta")