Scientific Linux 6.1 のベース BOX を自分で作成してみた。
http://vagrantup.com/docs/base_boxes.html
まずは VirtualBox 上で VM を作成する。そして、vagrant package コマンドでパッケージ化する。
以下から、最新のインストールDVDイメージをダウンロードしてくる。
http://www.scientificlinux.org/
VirtualBox の画面から仮想マシンの新規作成
名前vagrant-sl6
OS Linux
バージョンRedHat
メインメモリ 512 MB
チップセット PIIX3
オーディオ 無効
USB 無効
ネットワーク NAT
ストレージ(HDD) 80GB (動的拡張VMDK形式)
ストレージ(CDROM) インストールDVDイメージを割り当て(インストール時のみ)
チップセットをICH9 にすると、なぜかパッケージ化がうまくいかなかった。また、ベース BOX をコンパクトにするためHDDは VMDK 形式で作成してみた。それ以外の形式では試したことはない。
仮想マシンに Scientific Linux 6.1 インストール
仮想マシンのインストールを行う。基本的にインストーラーの流れのままでいいが、以下の点だけ注意する。
インストール後の作業
root でログインして、Vagrant 仕様にセットアップする。
パッケージ更新
最新のパッケージにアップデートする。カーネルなども更新されたのでついでにリブート。
$ yum update
$ reboot
ビルド用パッケージ
Chef や VirtualBox Guest Addition インストールのために必要なパッケージをインストール。
$ yum install ruby ruby-devel gcc gcc-c++ automake autoconf make rubygems kernel-devel
Chef
Chef のインストール
$ gem install chef --no-ri --no-rdoc
Guest Addition
VirtualBox の [デバイス]-[GuestAdditionインストール]を選択する。
GuestAddition のインストール
$ mount /dev/cdrom /mnt
$ sh /mnt/VBoxLinuxAdditions.run
パッケージ削除
VMサイズ削減のため、可能な限り不要なパッケージは削除する。
$ yum remove ruby-devel gcc gcc-c++ automake autoconf make
$ yum remove kernel-devel kernel-headers
$ yum remove xorg-x11-drv-ati-firmware
$ yum remove kernel-古いバージョン
yum の管理情報もクリアする
$ yum clear all
sudo
パスワードなしで sudo できるようにする。また、requiretty も無効にする。
コマンド:
$ visudo
設定内容:
# Default requiretty
%wheel ALL=(ALL) NOPASSWD:ALL
openssh
openssh サーバの設定を変更。ログイン時間が短縮されるらしい。
$ echo 'UseDNS no' >> /etc/ssh/sshd_config
selinux
Chef と相性が悪い SELinux を無効にする。
/etc/selinux/confg
SELINUX=disabled
vagrant ユーザ作成
vagrant ユーザを作成し、sudo 権限を付加、ssh 公開鍵認証でログインできるようにする。パスワードは vagrant。
$ adduser vagrant
$ passwd vagrant
$ gpasswd -a vagrant wheel
$ mkdir /home/vagrant/.ssh
$ chmod 700 /home/vagrant/.ssh
$ cd /home/vagrant/.ssh
$ curl 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' > authorized_keys
$ chown -R vagrant:vagrant /home/vagrant/.ssh
VM コンパクト化
VM イメージのコンパクト化のためのおまじない
$ dd if=/dev/zero of=/EMPTY bs=1M
$ rm /EMPTY
Vagrant パッケージ化
ホストマシン上でベースBOXのパッケージ化する。
vagrant --base vagrant-sl6
package.box が生成される。このファイルを配布することになる。
ベースBOX の動作確認
試しに手元で使えるようにしてみる。
vagrant box add sl6 package.box
mkdir sl6test
cd sl6test
vagrant init sl6
vagrant up
これで sl6 が使えるようになった。
