veeweeでvagrant boxをつくろう

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での日本語キーボード設定なども追加でしておいたほうが良さそうです。

同じタグの記事: Vagrant
同じタグの記事: veewee
同じタグの記事: VirtualBox
同じカテゴリの記事: Linux
関連書籍: VirtualBox