VagrantのBoxを作成するにはいくつか方法がありますが、veeweeというツールを使うと簡単です。
Bundlerを使ってインストールしましょう。
ri, rdocはインストールしないので~/.gemrcには次のように指定しておきます。
$ cat ~/.gemrc gem: --no-ri --no-rdoc
最初にVagrantをインストールしておくと良いでしょう。Vagrantのサイト(http://www.vagrantup.com/)から自分が使っているOSに応じてインストーラをダウンロードしインストールします。WindowsだとC:\HashiCorp\Vagrantにインストールされます。Mac OS Xだと/Applications/Vagrantにインストールされます。CentOSだと/opt/vagrantにインストールされます。VagrantにはRubyとRuby DevKitが同梱されているので、それを使います。
Mac OS Xなら下記。veeweeの作業用ディレクトリも用意しています。
$ PATH=/Applications/Vagrant/bin:/Applications/Vagrant/embedded/bin:$PATH $ export PATH $ gem install bandler $ mkdir -p $HOME/workspace/veewee
veeweeの作業用ディレクトリにはGemfileを用意します。Gemfileの内容は次のようになります。
source "https://rubygems.org" gem 'veewee'
veeweeはgemで用意されているのでGemfileを用意したら、veeweeの作業ディレクトリで次のように実行します。
$ cd $HOME/workspace/veewee $ bundle install --path=vendor/bundle
ちなみに、Vagrantに同梱されているものではなく、OSのパッケージで用意されているrubyを使いたいときには、そちらを使ってください。CentOSでは下記のようにしてインストールできます。
$ sudo yum install ruby ruby-devel
インストールができたらveeweeコマンドを使ってみましょう。helpと指定するとヘルプ表示ができます。
$ bundle exec veewee help
vbox templates でVirtualBoxで構築できるBox用のテンプレートの種類がわかります。ここではCentOSのものが欲しかったので、grepで絞り込みました。
$ bundle exec veewee vbox templates $ bundle exec veewee vbox templates|grep Cent
CentOS-6.4-i386-minimalで構築していくことにして、下記のように実行
$ bundle exec veewee vbox define centos6 'CentOS-6.4-i386-minimal'
definitionsディレクトリに定義用ファイルができあがります。今回はbash.sh を修正して、下記を追加しました。
yum -y update yum -y groupinstall 'Development Tools' yum -y groupinstall "X Window System" yum -y groupinstall "Desktop" yum -y groupinstall "General Purpose Desktop" yum -y groupinstall "Internet Browser" yum -y groupinstall "Japanese Support" echo "" >> /home/vagrant/.bash_profile echo "LANG=ja_JP.UTF-8" >> /home/vagrant/.bash_profile echo "export LANG" >> /home/vagrant/.bash_profile
構築をします。これで、CentOSのisoファイルをダウンロードして自動インストールをしてくれます。
$ bundle exec veewee vbox build centos6
完了すると仮想マシンが起動するので、veeweeコマンドでログインして確認をします。アカウント名はveewee、パスワードはアカウント名と同じです。
$ bundle exec veewee vbox ssh centos6
うまく実行されていないコマンドや、追加したいコマンドがあったら実行しておきます。また、環境設定などもしておきます。
ちなみに、強制再構築をするには下記
$ bundle exec veewee vbox build --force centos6
作った仮想マシンを破棄するには下記
$ bundle exec veewee vbox destroy centos6
出来上がったらvagrantコマンドでBoxへパッケージします。
$ vagrant package --base centos6 --output centos6.box
できあがったBoxファイルは、vagrantコマンドで追加できるようになります。
【追記】
CentOS6でNetworkManagerを使っていると、NICを追加したときにBoxを他のマシンで動かそうとしたときにうまくいかないようです。networkを使うようにするのが良さそうです。あと、GUIでの日本語キーボード設定なども追加でしておいたほうが良さそうです。