VagrantのBase Boxの作り方
VagrantのBase Boxを作りたくなることが多いのでメモ。
自分用なので結構端折ってます。
1. 準備
1-1. VirtualBoxのインストール
https://www.virtualbox.org/wiki/Downloads から使用OSに合わせてダウンロード&インストールを行う。
1-2. Vagrantのインストール
http://www.vagrantup.com/downloads から使用OSに合わせてダウンロード&インストールを行う。
1-3. Base BoxにするOSのイメージをダウンロード
Base BoxにするOSのイメージをダウンロードしてくる。今回はCentOS 6.5 (64bit)を作るのでそのイメージをダウンロードしてくる。
http://isoredirect.centos.org/centos/6/isos/x86_64/ この辺から適当なダウンロード先を選択し、CentOS-6.5-x86_64-minimal.iso というファイルをダウンロードする。
2. OSインストール~環境設定まで
2-1. VirtualBoxの仮想マシンを作ってOSをインストールする。
- HDD: 40G(いろいろ入れることがあるからちょっと多めに)
- Memory: 500M(メモリは設定変えられるから適当に)
- オーディオとUSBは無効化
- 後の設定はデフォルト
- もちろんOSイメージはセットしておくこと
上記の設定が終わったら仮想マシンを起動してOSをインストール。
インストール時にrootのパスワードを聞かれるので「vagrant」と入力する。
2-2. ネットワークインターフェースの起動
インストール直後はネットワークインターフェースが上がっていないので自動で起動するように変更する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT=no になっているので ONBOOT=yes に変更する。
ファイル保存後はネットワーク再起動。
# service network restart
eth0 が上がっていればOK。
2-3. SELinuxの停止とファイヤーウォールの停止
開発で使う環境にSELinuxやファイヤーウォール入らないので止める。
# vi /etc/selinux/config
SELINUX=enforcing になっているので SELINUX=disabled に変更する。この項目は再起動後有効。
# iptables -F # /etc/init.d/iptables save # /etc/init.d/iptables stop # chkconfig iptables off
ファイヤーウォールの設定をクリアしつつ、何もない状態を保存。その後、ファイヤーウォール自体止める。設定は残しておきたいのであれば、上2行は実行しなくてOK。
2-4. 一旦再起動
SELinuxを止めるためにも1回再起動をする。
2-5. MACアドレスの自動保存を無効化
MACアドレスが変更されると異なるインターフェース名が割り当てられてしまうため無効化する。
# cd /etc/udev/rules.d/ # mv 70-persistent-net.rules .70-persistent-net.rules # ln -s /dev/null 70-persistent-net.rules
2-6. vagrant ユーザの作成
vagrant ユーザの作成を行う。パスワードは「vagrant」
# groupadd vagrant # useradd -g vagrant vagrant # passwd vagrant
2-7. sudoの設定
vagrantでは基本的にrootで作業を行わず、sudoを使用することを推奨しているのでvisudoに設定を追加する。
# echo 'vagrant ALL=NOPASSWD:ALL' > /etc/sudoers.d/vagrant # chmod 0440 /etc/sudoers.d/vagrant
次にvagrantコマンド自体がBoxとSSHを使用してコマンドを発行するのでsudo時にttyがなくていいように設定を変更する。
# visudo
Defaults requiretty の行をコメントアウトする。
2-8. vagrantユーザに公開鍵の設定を行う。
vagrantコマンドがSSHで接続してくる際に使用する公開鍵を設定する。
# su - vagrant $ mkdir ~/.ssh $ chmod 0700 ~ ~/.ssh $ curl -Lo ~/.ssh/authorized_keys https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pubhttps://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub$ chmod 0600 ~/.ssh/authorized_keys $ exit
2014/10/17 追記 以前のURLから転送されて別のURLになったみたいなので変更
2-9. VirtualBox Guest Additions のインストール
VirtualBox Guest Additions をインストールする。インストール時に色々と必要なものがあるので合わせてインストールする。
# yum -y install gcc kernel-devel kernel-headers dkms make bzip2 perl # yum -y update kernel* # yum -y update # shutdown -h now
再起動後、VirtualBoxのメニューからGuest AdditionsのCDイメージを挿入する。
# mount -r /dev/cdrom /mnt # /mnt/VBoxLinuxAdditions.run # umount /mnt
OpenGLやWindow Systemやらでエラーが出るけど無視してOK。
2-10. 未使用領域のゼロフィル
仮想ハードディスクの未使用領域をゼロフィルしてBoxファイル作成時のファイルサイズを小さくすることができる。
終了後、シャットダウンを行う。
# yum clean all # dd if=/dev/zero of=/EMPTY bs=1M # rm -f /EMPTY # shutdown -h now
3. Base Boxのエクスポート
vagrant コマンドを使用し、Base Boxのエクスポートを行う。
> vagrant package --base (仮想マシン名)
しばらくすると、カレントフォルダにpackage.box というファイルができる。
4. Base BoxをVagrantで使用する。
> vagrant box add centos65-x86_64 package.box
これで、centos65-x86_64というboxが追加される。
あとは、いつものようにvagrant initしてVagrantfileいじって、起動すればいいだけ。