VagrantのBoxを新しく作成する方法(VirtualBox / CentOS 6.6 x86_64)

スポンサーリンク

VirtualBoxを使用してCentOS 6.6のVagrant Boxを作成しましたので作り方などをまとめます。基本的に公式ドキュメントに沿った形で実施しました。

仮想マシンの新規作成

VirturalBoxで仮想マシンの新規作成をします。今回はCentOS-6.6でBoxを作成するので名前は「centos66」にしました。スクリーンショットは省略しますが内容は以下の通りです。

  • メモリーサイズは512MB(後から調整可能)
  • 仮想ハードドライブを作成するを選択
  • ファイルタイプはVDIを選択
  • ストレージは可変サイズを選択
  • ファイルサイズは50〜100GBと余裕を持たせて設定

仮想マシンの設定変更

作成した仮想マシンの設定で不要なデバイスを無効にしておきます。

  • オーディオを有効化のチェックを外す

f:id:tasukujp:20150607131849p:plain

  • USBコントローラを有効化のチェックを外す

f:id:tasukujp:20150607132356p:plain

  • フロッピーのチェックを外す

f:id:tasukujp:20150607132413p:plain

  • アダプター1にNATが割り当てられてること(アダプター2のホストオンリーアダプターも不要)

f:id:tasukujp:20150607135849p:plain

CentOSのインストール

以上で仮想マシンの作成と設定が終わりました。CentOSをインストールしていきます。

 Index of /Linux/centos/6/isos/x86_64 からISOファイルをダウンロードして下さい。ボックスを生成する場合は少しでも容量を小さくしたいので、パッケージの少ないcentos-6.6-x86_64-minimal.isoを選びました。

ストレージのCD/DVDの項目の対象ドライブにダウンロードしたISOファイルを指定して、仮想マシンを起動するとOSのインストールが始まります。 f:id:tasukujp:20150607135645p:plain

  • 「Install or Upgrade an existing system」を選択してEnter

f:id:tasukujp:20150607142515p:plain

  • DownloadしたISOファイルをそのまま使用してるので「Skip」を選択

f:id:tasukujp:20150607142532p:plain

  • そのままEnter

f:id:tasukujp:20150607144409p:plain

  • Japaneseを選択

f:id:tasukujp:20150607144448p:plain

  • そのままEnter

f:id:tasukujp:20150607144548p:plain

  • キーボードはjp106を選択

f:id:tasukujp:20150607144629p:plain

  • Warningが表示されますが Re-initialize all を選択

f:id:tasukujp:20150607145309p:plain

  • Time Zoneは Asia/Tokyo を選択

f:id:tasukujp:20150607145416p:plain

  • rootのパスワードは「vagrant」を設定

f:id:tasukujp:20150607145822p:plain

  • 簡単すぎると警告が出ますが Use Anyway を選択

f:id:tasukujp:20150607145847p:plain

  • Use entire drive を選択

f:id:tasukujp:20150607150312p:plain

  • Write changes to disk を選択

f:id:tasukujp:20150607150422p:plain

  • インストールが開始されます

f:id:tasukujp:20150607150514p:plain

  • Rebootを選択すると再起動されます

f:id:tasukujp:20150607150611p:plain

  • インストール完了後、再起動してルートユーザーでログインして下さい。パスワードは設定した通り「vagrant」です。

CentOSの設定

eth0の有効化

まず初めに起動時点では NIC が認識されていないため/etc/sysconfig/network-scripts/ifcfg-eth0を開いてONBOOT=yesに変更してからネットワークの再起動をします。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
# service network restart
Vagrantユーザーの作成

vagrantユーザーを作成します。パスワードも「vagrant」にします。

# useradd -m vagrant
# passwd vagrant
SSHの設定

VagrantはSSHを使用します。SSHのデフォルトユーザーは vagrant です。公開鍵認証で認証されるように設定しておく必要があります。

# mkdir /home/vagrant/.ssh
# chmod 700 /home/vagrant/.ssh
# yum -y install wget
# wget --no-check-certificate "https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub" -O /home/vagrant/.ssh/authorized_keys
# chmod 600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant /home/vagrant/.ssh
sudoの設定

SSHユーザーはパスワードなしで sudo を実行できる権限が必要なので TTYなしで実行できるようにし、sudoをパスワードなしで使用できるようにします。

# visudo
---
以下をコメントアウト
# Defaults     requiretty
---
'# %wheel ALL=(ALL)  NOPASSWD: ALL' の箇所のコメントを外し%wheelをvagrantに変更
vagrant ALL=(ALL)     NOPASSWD: ALL

設定したら確認します。

su - vagrant
sudo ls /root
VirtualBox Guest Additionsのインストール

VirtualBox Guest Additionは、VirtualBoxの機能を仮想マシンが活用できるようにするためにインストールします。まずはインストールに必要なパッケージをいれておきます。終わったらrebootで一度再起動してください。

# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum -y install gcc
# yum -y install kernel-devel-`uname -r`
# yum -y install dkms
# yum -y install perl
# reboot

VirtualBox Guest Additionsのisoイメージをダウンロードしてインストールしますが、VirtualBoxのバージョンに合わせて  Index of http://download.virtualbox.org/virtualbox から選択して下さい。

# wget http://download.virtualbox.org/virtualbox/4.3.28/VBoxGuestAdditions_4.3.28.iso
# mkdir /media/VBoxGuestAdditions
# mount -o loop,ro VBoxGuestAdditions_4.3.28.iso /media/VBoxGuestAdditions
# sh /media/VBoxGuestAdditions/VBoxLinuxAdditions.run
# rm VBoxGuestAdditions_4.3.28.iso
# umount /media/VBoxGuestAdditions
# rmdir /media/VBoxGuestAdditions
udevルールの削除

ボックスのOS起動時にネットワークデバイスのエラーが起きるのを回避するため、udevルールを削除しておきます。

# ln -s -f /dev/null /etc/udev/rules.d/70-persistent-net.rules
# rm -rf /dev/.udev/
# rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
追加の設定

この時点でボックスに必要な最小限のことは完了しました。追加で以下の設定をしておきます。

# yum -y update
---
# vi /etc/sysconfig/selinux
SELINUX=disabled
---
# service iptables stop
# service ip6tables stop
# chkconfig iptables off
# chkconfig ip6tables off
---
# yum -y install ntp
# ntpdate ntp.nict.jp
# vi /etc/ntp.conf
以下のように変更
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
server -4 ntp.nict.jp iburst
---
# service ntpd start
# chkconfig ntpd on

ボックスのサイズ最小化

仮想マシンイメージが大きくならないように最適化しておきます。yumのキャッシュ削除と、仮想ハードディスクをゼロ埋めして削除することで、ディスクのフラグメンテーションの問題が解消され、圧縮の効率が上がります。

# du -sh /var/cache/yum
# yum clean all
---
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY

最後にOSのシャットダウンをします。

# shutdown -h now

ボックスの作成

ボックスに変換するための仮想マシンができましたので、Vagrantのボックスファイルを作成します。vagrant package --base <仮想マシン名>を実行してください。ここからはローカルのターミナル上で行ないます。

$ vagrant package --base centos66
==> centos66: Exporting VM...
==> centos66: Compressing package to: /Users/tasukujp/Documents/dev/package.box
$ ll package.box
-rw-r--r--  1 tasukujp  staff  393824089  6  7 17:00 package.box

これでボックスが作成されました。サイズは375MBですね。500MB〜2GBが大体の目安らしいです。

ボックスを起動

作成されたボックスで新しい仮想マシンを作成してみたいと思います。

まずはボックスを追加します。

$ vagrant box add CentOS-6.6-minimal-ja package.box
$ vagrant box list
CentOS-6.6-minimal-ja (virtualbox, 0)

次に仮想マシンを作成します。

$ vagrant init CentOS-6.6-minimal-ja
$ vagrant up
$ vagrant ssh

仮想マシンが起動してSSH接続できたら成功です。

参考書籍

実践 Vagrant
実践 Vagrant
posted with amazlet at 15.06.07
Mitchell Hashimoto
オライリージャパン
売り上げランキング: 151,740

参考リンク

 CentOS6 インストール

 Creating a Base Box - Vagrant Documentation

 Creating a Base Box - VirtualBox Provider - Vagrant Documentation

 Chapter 4. Guest Additions

関連記事

 MacでのVagrantの使い方とコマンドについて(VirtualBoxに仮想マシンを作成) - TASK NOTES

 Vagrantプラグインの使い方(vbguest, hostmanager, sahara, snapshot) - TASK NOTES

 Packerを使用してVirtualBoxの仮想マシンからVagrantのBoxを作成する - TASK NOTES

 VagrantのプロビジョニングをChef-Soloで実行する方法(Berkshelf + knife-solo使用) - TASK NOTES