LoginSignup
25
28

More than 3 years have passed since last update.

Amazon Linux 2 の Vagrant Base Box を作成する

Last updated at Posted at 2017-12-16

この記事の続きです
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 ファイルを作成

meta-data
local-hostname: localhost.localdomain

ホスト名は Vagrant によって起動時に変更されます

user-data ファイルを作成

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 のインストール

  1. VirtualBox の設定から cloud-init のISOイメージを取り外します

  2. メニューから VirtualBox Guest Additions のCDイメージを挿入します

  3. 仮想マシンにログインします

  4. 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

参考

25
28
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
28