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.pub https://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いじって、起動すればいいだけ。

参考サイト

  1. VBoxManageを使ってVagrant Boxを作成する方法(第2回)~仮想マシンをVagrant化する
  2. 手動で Base Box 作成

Follow me!

コメントを残す

メールアドレスが公開されることはありません。

前の記事

ブログ書き始め

次の記事

CentOS 6.5にRubyインストール