Debian8のVagrantのboxを作りたい

More than 3 years have passed since last update.

そろそろ jessie(Debian8) の足音が聞こえたきたので Vagrant の box が欲しいなぁと思いました.ということで作りましょう.


VirtualBox準備

いい感じに jessie をインストールします.注意点を適当に箇条書きします.



  • Debian -- Debian インストーラ


    • netinst CD イメージをダウンロードして使う



  • NAT でポートフォワーディングで 22 番ポートをどこかにフォワーディングしておくとあとですぐに ssh 出来て便利(デフォルトは10.0.2.15のIPを持つ)

  • USBとかオーディオとか必要ないので無効にした方が良さそう

  • ハードドライブはVDIで可変サイズで作る


jessieをインストールする際の注意点


  • root のパスワードは vagrant

  • ここでユーザー vagrant パスワード vagrant でユーザーを作る

  • apt のミラーは日本のものを選択

  • SSH Server と Standard system utilities だけインストール

これでインストールが終わったら色々やることがあります.


jessieインストール後の作業



  • VirtualBox Guest Additionsをインストールするために依存パッケージを幾つか入れる



    • linux-headers-$(uname -r) build-essential



  • vagrant ユーザーをパスワード無しで root になれるように


    • 色々あるが sudo グループに追加して /etc/sudoers を編集




  • /etc/ssh/sshd_configUseDNS no を追加

  • 起動の度に GRUB のタイムアウトを待つのはつらいので GRUB の設定変更

  • vagrant 用の鍵を設定

  • apt で contrib non-free もインストールできるように

  • VirtualBox Guest Additions をインストールする

ハマったのは jessie から systemd が採用になった関係で VirtualBox Guest Additions は apt でインストールすると古いのが入ってうまく起動できませんでした.virtualboxの使用するバージョンを新しいものにして最新のものをインストールすれば大丈夫のようです.

ということで catatsuy/vagrant_debian を作りました.

今のスクリプトを貼っておきます.


jessie.sh

#!/bin/bash -xe

virtualbox_ver=4.3.20

apt-get -y install linux-headers-$(uname -r) build-essential
apt-get -y install zlib1g-dev libssl-dev libreadline-gplv2-dev
apt-get -y install sudo

usermod -a -G sudo vagrant
sed -e "s/^%sudo\tALL=(ALL:ALL) ALL/%sudo\tALL=(ALL) NOPASSWD:ALL/g" /etc/sudoers > /etc/sudoers.new
chown root:root /etc/sudoers.new
chmod 0440 /etc/sudoers.new
mv /etc/sudoers.new /etc/sudoers

echo 'UseDNS no' >> /etc/ssh/sshd_config

# Remove 5s grub timeout to speed up booting
cat <<EOF > /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT=0
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX="debian-installer=en_US"
EOF

update-grub

mkdir -pm 700 /home/vagrant/.ssh
wget -O /home/vagrant/.ssh/authorized_keys \
'https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub'
chmod 0600 /home/vagrant/.ssh/authorized_keys
chown -R vagrant:vagrant /home/vagrant/.ssh

apt-get -y install nfs-common

sed -e "/^[ \t]*deb[ \t-]/ s/[ \t]contrib//g" \
-e "/^[ \t]*deb[ \t-]/ s/[ \t]non-free//g" \
-e "/^[ \t]*deb[ \t-]/ s/[ \t]main/ main contrib non-free /g" \
"/etc/apt/sources.list" > "/etc/apt/sources.list.new"
mv /etc/apt/sources.list.new /etc/apt/sources.list

# Install the VirtualBox guest additions
wget http://download.virtualbox.org/virtualbox/${virtualbox_ver}/VBoxGuestAdditions_${virtualbox_ver}.iso
mkdir /media/VBoxGuestAdditions
mount -o loop,ro VBoxGuestAdditions_${virtualbox_ver}.iso /media/VBoxGuestAdditions
sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
rm VBoxGuestAdditions_${virtualbox_ver}.iso
umount /media/VBoxGuestAdditions
rmdir /media/VBoxGuestAdditions

# Start the newly build driver
service vboxadd start

# delete the cache of apt
rm -rf /var/cache/apt/archives/*
rm -rf /var/lib/apt/lists/*


こうすると jessie の VM ができます.


VirtualBoxのVMからpackage.boxを作る

vagrant package --base jessie

最後の jessie は VirtualBox 上で付けた名前を付けます.

これで来る jessie 時代も恐くない!!