Windows7で、veeweeを使ってUbuntu12.04.3-DesktopのBoxを作る

以前Vagrantを利用したときは公開されているBoxを使用しましたが、自分でもBoxを作ってみようと考え、veeweeとそのテンプレートを使ってBoxを作ってみました。
Windowsでの構築については他にもいろいろとエントリがありますが、自分用のメモとして残しておきます。

 

環境


 
なお、利用するUbuntuのisoイメージはveeweeのテンプレートにあるdefinition.rb内で「:iso_file」として指定されているものと同じファイル名にした方が良いのかなと考え、以下の「PC (Intel x86) alternate install CD」(ファイル名:ubuntu-12.04.3-alternate-i386.iso)を事前にダウンロードしておきます。事前ダウンロードする理由は後述します。
Ubuntu 12.04.5 LTS (Precise Pangolin)

 

流れ

veeweeのインストール

今回はDドライブの直下にveeweeフォルダを用意して、その中にGitHubから持ってきたveeweeを入れます。

d:\>mkdir veewee


d:\>cd veewee


d:\veewee>git clone https://github.com/jedi4ever/veewee.git
Cloning into 'veewee'...
remote: Counting objects: 13219, done.
remote: Compressing objects: 100% (5085/5085), done.
Receiving objects: 100% (13219/13219), 3.86 MiB | 147 KiB/s, done.
emote: Total 13219 (delta 8735), reused 12256 (delta 7933)Resolving deltas: 0% (0/8735)
Resolving deltas: 100% (8735/8735), done.


d:\veewee>cd veewee


d:\veewee\veewee>bundle install
〜略〜
Using veewee (0.3.8.dev) from source at d:/veewee/veewee
Your bundle is complete!
Gems in the group kvm were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

 

Boxの定義

今回はUbuntu12.04.3のデスクトップ版(32bit)を使用するため、veeweeのテンプレートを元に define します。

d:\veewee\veewee>bundle exec veewee vbox define ubuntu120403 'ubuntu-12.04.3-desktop-i386'


# 結果
The basebox 'ubuntu120403' has been successfully created from the template 'ubuntu-12.04.3-desktop-i386'
You can now edit the definition files stored in d:/veewee/veewee/definitions/ubuntu120403 or build the box with:
veewee vbox build 'ubuntu120403' --workdir=d:/veewee/veewee

 

isoフォルダを作り、インストール用isoファイルを入れる

veeweeでBoxを作る時に色々と試行錯誤するため、事前にダウンロードしておいた「ubuntu-12.04.3-alternate-i386.iso」ファイルをisoフォルダへ入れておき、veeweeでBoxをbuildするたびにインターネット経由でダウンロードすることを防ぎます。

d:\veewee\veewee>mkdir iso


 

各種設定ファイルの編集

まず、veeweeのdefinition.rb(D:\veewee\veewee\definitions\ubuntu120403\ubuntu120403\definition.rb)を編集します。
いろいろな展開はpuppetではなくchefを使う予定なので、puppetのセットアップを省略するため、41行目をコメントアウトしておきます。

#"puppet.sh",


次に、インストール用の設定ファイル(D:\veewee\veewee\definitions\ubuntu120403\preseed.cfg)を編集します。
今回はタイムゾーンを変更します(25行目あたり)。
他にも日本語キーボードレイアウトの設定などをしたかったのですが、現時点ではうまくいかなかったため、今回は諦めます。

# d-i time/zone string UTC
d-i time/zone string Asia/Tokyo

 

buildする

buildには時間がかかるため、しばらく放置します。

d:\veewee\veewee>bundle exec veewee vbox build ubuntu120403


# 結果
The box ubuntu120403 was built successfully!
You can now login to the box with:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 7222 -l vagrant 127.0.0.1

 

Boxファイルとしてexportする

buildするとUbuntu仮想マシンが起動したままとなりますが、その状態で以下のコマンドを実行してエクスポートします(仮想マシンは自動的にシャットダウンします)。

d:\veewee\veewee>bundle exec veewee vbox export ubuntu120403


# 結果
Successfully exported 1 machine(s).
Packaging the box
Cleaning up temporary directory

To import it into vagrant type:
vagrant box add 'ubuntu120403' 'd:/veewee/veewee/ubuntu120403.box'

To use it:
vagrant init 'ubuntu120403'
vagrant up
vagrant ssh


以上で、Vagrant用のBoxが手に入りました。