そろそろ jessie(Debian8) の足音が聞こえたきたので Vagrant の box が欲しいなぁと思いました.ということで作りましょう.
- Creating a Base Box - VirtualBox Provider - Vagrant Documentation
- Vagrant の VirtualBox 用 Base Box ファイルを手動で作ってみる | CUBE SUGAR STORAGE
- Installing Debian Linux in a VirtualBox Virtual Machine | Open-Source Routing and Network Simulation
- holms/vagrant-jessie-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
を編集
- 色々あるが sudo グループに追加して
-
/etc/ssh/sshd_config
にUseDNS 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 時代も恐くない!!