Vagrant の Box を作成する (2)
vagrant 1.0.7 と 1.1.2 の共存
Vagrant の Box を作成する (1) で rvm の gemset veewee を vagrant 1.0.7 を使えるようにした。 1.1.2 の ~/.vagrant.d だと 1.0.7 の vagrant が動かない。 zsh を使っているのだが ~/veewee ディレクトリをホームディレクトリだと思わせるエイリアスを使うことにする。
rvm gemset use veewee
mkdir ~/veewee
cd ~/veewee
alias vagrant="HOME=$HOME/veewee vagrant"
box の作成 (改良版)
definitions.rb の修正
テンプレートにない Ubuntu 13.04 の box を作る。
vagrant basebox define 'ubuntu-raring-server' 'ubuntu-12.10-server-amd64'
ubuntu-12.10-server-amd64 のテンプレートを元にする。 definitions があるディレクトリに iso ディレクトリを作り あらかじめダウンロードしておいた raring-server-amd64.iso を移動する。
mkdir iso
mv /path/to/raring-server-amd64.iso iso
definitions/ubuntu-raring-server/definition.rb を編集する。 iso ファイルの設定をする。md5sum はダウンロード元にあるファイルから入手するか、 md5sum コマンドで
:iso_file => "raring-server-amd64.iso",
:iso_src => "http://cdimage.ubuntu.com/ubuntu-server/daily/current/raring-server-amd64.iso",
:iso_md5 => '***',
ディスクのサイズは 10GB だと心もとないので
:disk_size => '51200',
とした。CPU のコア数とメモリも調整した。
:cpu_count => '2',
:memory_size=> '1536',
Ruby 関係のインストール
次に Ubuntu がインストールされた後に実行されるスクリプトを編集する。 definitions/ubuntu-raring-server/postinstall.sh を開く。 ruby 1.9 と rubygems のバージョンを上げた。/opt 以下に ruby と gem がインストールされる。
# Install Ruby from source in /opt so that users of Vagrant
# can install their own Rubies using packages or however.
RUBY_PACKAGE=ruby-1.9.3-p392.tar.gz
RUBY_PACKAGE_DIR=`echo $RUBY_PACKAGE | sed -e 's/.tar.gz//g'`
wget http://ftp.ruby-lang.org/pub/ruby/1.9/$RUBY_PACKAGE
tar xvzf $RUBY_PACKAGE
cd $RUBY_PACKAGE_DIR
./configure --prefix=/opt/ruby
make
make install
cd ..
rm -rf $RUBY_PACKAGE_DIR
rm $RUBY_PACKAGE
# Install RubyGems
RUBYGEMS_PACKAGE=rubygems-2.0.3.tgz
RUBYGEMS_PACKAGE_DIR=`echo $RUBYGEMS_PACKAGE | sed -e 's/.tgz//g'`
wget http://production.cf.rubygems.org/rubygems/$RUBYGEMS_PACKAGE
tar xzf $RUBYGEMS_PACKAGE
cd $RUBYGEMS_PACKAGE_DIR
/opt/ruby/bin/ruby setup.rb
cd ..
rm -rf $RUBYGEMS_PACKAGE_DIR
rm $RUBYGEMS_PACKAGE
postinstall.sh では gem で chef と puppet がインストールされるようになっている。
SSH や sudo の設定について
postinstall.sh をみると sudo や ssh の設定については
- vagrant ユーザは admin グループに所属している
- admin グループはパスワード不要で sudo を実行できる
- vagrant ユーザのパスワードは vagrant
- vagrant ユーザの ssh の鍵として https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub を使う
box を作成する
vagrant basebox build ubuntu-raring-server
vagrant basebox export ubuntu-raring-server
作成した box を使用する
veewee 用の gemset veewee から global に変えてエイリアスを削除する。
rvm gemset use global
unalias vagrant
としてから
vagrant -v
で vagrant のバージョンを確認する。1.1.2 になっていればよい。
vagrant box add 'ubuntu-raring-server' 'ubuntu-raring-server.box'
mkdir ubuntu-raring-server
cd ubuntu-raring-server
vagrant init 'ubuntu-raring-server'
vagrant up
VBoxGuestAdditions_4.1.18.iso のインストールに失敗していたが、だいたい動く。 ssh で接続するには
vagrant ssh
とする。
vagrant halt
でシャットダウンする。もし、仮想マシンを削除するには
vagrant destroy
とする。