VirtualBoxを使用してCentOS 6.6のVagrant Boxを作成しましたので作り方などをまとめます。基本的に公式ドキュメントに沿った形で実施しました。
仮想マシンの新規作成
VirturalBoxで仮想マシンの新規作成をします。今回はCentOS-6.6でBoxを作成するので名前は「centos66」にしました。スクリーンショットは省略しますが内容は以下の通りです。
- メモリーサイズは512MB(後から調整可能)
- 仮想ハードドライブを作成するを選択
- ファイルタイプはVDIを選択
- ストレージは可変サイズを選択
- ファイルサイズは50〜100GBと余裕を持たせて設定
仮想マシンの設定変更
作成した仮想マシンの設定で不要なデバイスを無効にしておきます。
- オーディオを有効化のチェックを外す
- USBコントローラを有効化のチェックを外す
- フロッピーのチェックを外す
- アダプター1にNATが割り当てられてること(アダプター2のホストオンリーアダプターも不要)
CentOSのインストール
以上で仮想マシンの作成と設定が終わりました。CentOSをインストールしていきます。
Index of /Linux/centos/6/isos/x86_64 からISOファイルをダウンロードして下さい。ボックスを生成する場合は少しでも容量を小さくしたいので、パッケージの少ないcentos-6.6-x86_64-minimal.iso
を選びました。
ストレージのCD/DVDの項目の対象ドライブにダウンロードしたISOファイルを指定して、仮想マシンを起動するとOSのインストールが始まります。
- 「Install or Upgrade an existing system」を選択してEnter
- DownloadしたISOファイルをそのまま使用してるので「Skip」を選択
- そのままEnter
- Japaneseを選択
- そのままEnter
- キーボードはjp106を選択
- Warningが表示されますが Re-initialize all を選択
- Time Zoneは Asia/Tokyo を選択
- rootのパスワードは「vagrant」を設定
- 簡単すぎると警告が出ますが Use Anyway を選択
- Use entire drive を選択
- Write changes to disk を選択
- インストールが開始されます
- Rebootを選択すると再起動されます
- インストール完了後、再起動してルートユーザーでログインして下さい。パスワードは設定した通り「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接続できたら成功です。
参考書籍
オライリージャパン
売り上げランキング: 151,740
参考リンク
Creating a Base Box - Vagrant Documentation
Creating a Base Box - VirtualBox Provider - Vagrant Documentation
関連記事
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