Help us understand the problem. What is going on with this article?

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 時代も恐くない!!

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away