この記事の続きです
Amazon Linux 2 を VirtualBox でオンプレミスの開発環境に使用する
概要
- オンプレミスでも使える Amazon Linux 2 が発表
- VirtualBox で使えるなら Vagrant で使いたい!
- Amazon Linux 2 の Vagrant Base Box を作りました
VirtualBox で Base Box にする仮想マシンを作成する
この記事の内容を前提としています
Amazon Linux 2 を VirtualBox でオンプレミスの開発環境に使用する
Base Box を作成するために必要な設定
Creating a Base Box - Vagrant by HashiCorp
設定内容
- ユーザー vagrant を作成する
- root のパスワードを 'vagrant' にする
- パスワード不要で sudo できるようにする
cloud-init でこの設定を行っていきます
cloud-init のファイルを格納したISOイメージを作成
meta-data ファイルを作成
local-hostname: localhost.localdomain
ホスト名は Vagrant によって起動時に変更されます
user-data ファイルを作成
#cloud-config
users:
- default
- name: vagrant
groups: wheel
sudo: ['ALL=(ALL) NOPASSWD:ALL']
plain_text_passwd: vagrant
ssh-authorized-keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
lock_passwd: false
chpasswd:
list: |
root:vagrant
expire: False
# VirtualBox Guest Additions のビルドに必要なパッケージをインストール
packages:
- kernel-devel
- kernel-headers
- gcc
- make
- perl
- bzip2
- mod_ssl
runcmd:
# cloud-init による起動時の root のパスワードリセット処理を無効化
- sed -i 's/.*root:RANDOM/#&/g' /etc/cloud/cloud.cfg.d/99_onprem.cfg
SSHの認証に Vagrant の Insecure Keypair の公開鍵を指定しています
cloud-init のファイルを格納したISOイメージを作成する方法は 前回の記事 を参考にして下さい。
Base Box の設定
仮想マシンの起動
作成した cloud-init のISOイメージをマウントして Amazon Linux 2 の仮想マシンを起動します
カーネルの更新
カーネルを更新します。
カーネルに更新があった場合、この後の VirtualBox Guest Additions のインストールでヘッダと実行中のカーネルのバージョンの不一致によりビルドに失敗するので、更新後に再起動を行います。
$ sudo yum -y update kernel
$ sudo reboot
VirtualBox Guest Additions のインストール
-
VirtualBox の設定から cloud-init のISOイメージを取り外します
-
メニューから VirtualBox Guest Additions のCDイメージを挿入します
-
仮想マシンにログインします
-
root で以下のコマンドを実行し、VirtualBox Guest Additions をインストールします
# mount -r -t iso9660 /dev/cdrom /media
# /media/VBoxLinuxAdditions.run
# umount /media
# systemctl enable vboxadd.service
後処理
この作業は、Base Box にする仮想マシンの初期設定で実行したコマンドの履歴の削除とキャッシュの初期化によって Box のファイルサイズを抑えるために行っています。
コマンドの実行履歴が残っても問題ない場合はこの作業は省略しても構いません。
Bash のコマンド履歴を削除
# export HISTSIZE=0
yum のキャッシュを削除
# yum clean all
# rm -rf /var/cache/yum
/var/log ディレクトリに出力されたのログを削除
# find /var/log -type f -exec cp -f /dev/null {} \;
仮想ハードディスクの領域を最適化
# dd if=/dev/zero of=/ZERO bs=1M
# rm -f /ZERO
シャットダウン
# shutdown -h now
仮想マシンから Base Box を作成
VirtualBox の仮想マシンを Base Box のファイルに書き出します
$ vagrant package --base <仮想マシンの名前> --output amazonlinux2.box
出力された amazonlinux2.box が Base Box のファイルです
box を共有する場合はこのファイルを配布します
Base Box を使用する
Vagrant へ box を登録
作成した Base Box を Vagrant に追加します
$ vagrant box add --name amazonlinux2 amazonlinux2.box
box の起動
$ vagrant init amazonlinux2
$ vagrant up