LoginSignup
24
21

More than 5 years have passed since last update.

Amazon Linux 2 LTSの綺麗なVagrant boxを作ってみた

Last updated at Posted at 2018-01-16

はじめに

Amazon Linux 2 LTSのVagrant box作る方法、2018/1/16時点の各種情報ではそのままではいくつかハマってうまくいかなかった。
でもちゃんと公式読んだら出来た。公式読まなかった俺が悪い。

備忘録としてAmazon Linux 2 LTSの綺麗なVagrant boxを作成する方法を残しておく。
環境はmacOS Sierraでやってる。

大まかな手順
1. Amazon Linux 2のダウンロード
2. cloud init用データの作成
3. VMの作成とAmazon Linux 2の起動
4. Guest Additionsのインストール
5. クリーンアップとboxの作成

Amazon Linux 2の公式は次のURL

2018年1月16日時点のVirtualBoxイメージは次のものが最新

さぁ、はじめよう。

準備

VirtualBoxイメージのダウンロード

curl -LO https://cdn.amazonlinux.com/os-images/2017.12.0.20171212.2/virtualbox/amzn2-virtualbox-2017.12.0.20171212.2-x86_64.xfs.gpt.vdi

cloud init用データの作成

ここが一つ目のハマリポイントだった。ボリュームラベルをcidataにしないとAmazon Linux 2 LTSイメージの初回起動時に認識できなかった。

mkdir seed
echo "local-hostname: localhost.localdomain" > seed/meta-data

cat << __EOF__ > seed/user-data
#cloud-config
# vim:syntax=yaml
users:
# A user by the name ec2-user is created in the image by default.
  - 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
__EOF__

# ISOイメージの作成
hdiutil makehybrid -iso -joliet -o seed.iso seed -joliet-volume-name cidata

VMの起動

コマンドラインで実行する。

# VMの作成とAmazon Linux 2の起動
VM=vagrant-amznlinux2
VDI=amzn2-virtualbox-2017.12.0.20171212.2-x86_64.xfs.gpt.vdi
VGA=/Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso
VBoxManage createvm --name "$VM" --ostype "RedHat_64" --register
VBoxManage storagectl "$VM" --name "SATA Controller" --add "sata" --controller "IntelAHCI"
VBoxManage storagectl "$VM" --name "IDE Controller" --add "ide"
VBoxManage storageattach "$VM" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium $VDI
VBoxManage storageattach "$VM" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium seed.iso
VBoxManage modifyvm "$VM" --natpf1 "ssh,tcp,127.0.0.1,2222,,22" --memory 1024 --vram 8 --audio none --usb off
VBoxManage startvm "$VM" --type headless

VMにログイン

# Vagrant insecure private keyのダウンロード
curl -sL https://raw.githubusercontent.com/hashicorp/vagrant/master/keys/vagrant -o vagrant.pem
chmod 600 vagrant.pem

# ログイン
ssh -p 2222 vagrant@localhost -i vagrant.pem

VBoxGuestAdditionsのインストール準備

kernelを入れない手順が多くアップされているが、kernelを入れないとVBoxGuestAdditionsで失敗する。ここが二つ目のハマリポイント。kernelも指定しておけば取り敢えずOK。

# VBoxGuestAdditions依存パッケージのダウンロード
sudo yum install -y kernel kernel-devel perl gcc

# 再起動
sudo shutdown -r now

VBoxGuestAdditionsのインストール

# VBoxGuestAdditionsイメージをアタッチ
VBoxManage storageattach "$VM" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium $VGA --forceunmount

# ログイン
ssh -p 2222 vagrant@localhost -i vagrant.pem

# VagrantにRHELと認識させるおまじない
sudo ln -s /etc/system-release /etc/redhat-release

# OSからマウント
sudo mount -r /dev/cdrom /media

# VBoxGuestAdditionsのインストール
sudo /media/VBoxLinuxAdditions.run --nox11

# アンマウント
sudo umount /media

クリーンアップ

ボックス化した時にサイズを小さくするための作業

# クリーンアップ
rm $HOME/.bash_history
sudo rm -rf /var/cache/yum
sudo dd if=/dev/zero of=/0 bs=4k
sudo rm -f /0
history -c

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

Vagrant boxの作成と登録

vagrant package --base "$VM"
vagrant box add --name "amzn2-2017.12.0.20171212.2-x86_64" package.box

お試し起動

mkdir amznlinux2
cd amznlinux2
vagrant init amzn2-2017.12.0.20171212.2-x86_64
vagrant up

お試しログイン

$ vagrant ssh
Last login: Tue Jan 16 08:24:53 2018 from gateway

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
No packages needed for security; 5 packages available
Run "sudo yum update" to apply all updates.
24
21
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
24
21