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

とする。

参考

Tags of current page

, ,