VagrantでオリジナルBox作成 Ubuntu18.04編 

## はじめに

Ubuntu16.04よりUbuntu18.04を使う機会が増えたため、VagrantのBOXを作成した。

## 準備

各アプリのバージョンは以下の通り。

| # | 名称 | バージョン |
| :---- | :----------------------------- | :-------------|
| 1 | VirtualBox | 5.2.18-124319 |
| 2 | VirtualBox_Extension_Pack| 5.2.18 |
| 3 | Vagrant | 2.1.5 | 
| 4 | Ubuntu Server LTS| 18.04.1 | 

* VirtualBox[Link](https://www.virtualbox.org/)
* Ubuntu  [Link](http://cdimage.ubuntu.com/releases/)
* Vagrant[Link](https://www.vagrantup.com/)

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

以下の設定値で、仮想マシンを新規作成する。


| 項目 | 設定値 | 備考 |
|:---------|:---------|:---------|
| 名前 | Ubuntu-18.04.1_SV_LTS_5218 | 自由に |
| タイプ | Linux |  |
| バージョン | Ubuntu(64-bit) |  |
| メモリ | 2048 | 適宜変更 |
| ハードディスク | 仮想ハードディスクを作成する |  |
| ファイルの場所 | デフォルト	適宜変更 |
| ファイルサイズ | 10GB | 適宜変更 |
| ハードディスクのファイルタイプ	VDI | 適宜変更 |
| 物理ハードディスクにあるストレージ | 可変サイズ | 適宜変更 |

※別途、オーディオを無効化

## OSインストール

VMの設定画面＞ストレージ＞光学ドライブ(空)を選択後、属性よりisoイメージを選択し、VirtualBoxを起動する。

| 項目 | 設定値 | 備考 |
|:---------|:---------|:---------|
| ホスト名 | ubuntu | 自由に |
|ユーザ名  | vagrant | 固定 |
| パスワード | vagrant | 固定 |
| パーティション | 自動 | LVMは好みで |
| homeの暗号化 | NO | しない |
| proxy | 未設定 |  |
| 自動アップデート | NO | しない |
| インストールするソフトウェア | OpenSSH Server | 必須 |
| grub | yes | 更新する |

★standard system utilities

## ネットワークの設定

Teratermでアクセスする為、VirtualBoxのネットワークを変更する。
インストールした「Ubuntu」を選択し、設定メニューを表示する。
NATネットワークのポートフォワーディングルールとして以下を設定する。
````
新規追加->ホストポートに2222、ゲストポートに22を入力
````

## OSインストール後の設定

コマンドはすべて「sudo -i」でrootとなり実行を行う。


### OSの更新

```` bash

# 更新
apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
# 再起動する
````

## Vagrant設定

### SSHの設定

vagrantで必要なsshの設定を行う。公開鍵が無いとupした場合、エラーになる。

```` bash
mkdir /home/vagrant/.ssh
chmod 700 /home/vagrant/.ssh
cd /home/vagrant/.ssh 
curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
chmod 600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant:vagrant /home/vagrant/.ssh
````

### sudoの設定

vagrantユーザがsudoコマンドをパスワードなしで使用できるようにする。

```` bash
visudo
#追加
vagrant ALL=(ALL)       NOPASSWD: ALL
````
### Extension_Pack

````bash
apt-get install -y xserver-xorg xserver-xorg-core gcc make perl
````

VBOXのメニューからデバイス＞GusetAdditionsCDの挿入

````cmd
# CD-ROMのマウント
mkdir -p /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/

#インストール
cd /mnt/cdrom
./VBoxLinuxAdditions.run

````

以下の様になれば成功

````bash
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel modules.  This may take a while.
VirtualBox Guest Additions: Running kernel modules will not be replaced until the system is restarted
VirtualBox Guest Additions: Starting.
````

### 後処理

#### 不要なlinux-imageパッケージの削除

````bash
# imageの確認
dpkg -l 'linux-image-*'

# 現在のカーネル確認
uname -r 

# 不要なlinux-imageパッケージの一括削除
dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
````

#### 不要なパッケージの削除

````bash
apt-get clean
apt-get autoremove
```

#### フラグメント解消

````bash
dd if=/dev/zero of=/tmp/ZERO bs=1M
rm /tmp/ZERO
history -c
````

## BOXの作成と追加

````cmd
vagrant package --base "Ubuntu-18.04.1_SV_LTS_5218" --output "ubntu180401LTS_5218_r1.box"
vagrant box add --name ubntu180401LTS_5218_r1 ubntu180401LTS_5218_r1.box
````

## BOXの確認

以下のコマンドでBOXが確認できれば完了

````cmd
vagrant box list
````