以前、Vagrantを利用したときは公開されているBoxを使用しましたが、自分でもBoxを作ってみようと考え、veeweeとそのテンプレートを使ってBoxを作ってみました。
Windowsでの構築については他にもいろいろとエントリがありますが、自分用のメモとして残しておきます。
環境
- ホストOS: Windows7 SP1
- ゲストOS: Ubuntu Desktop 12.04.3 32bit
- 使用するveeweeのテンプレート名: ubuntu-12.04.3-desktop-i386
- VirtualBox: 4.2.18
- Ruby: 1.9.3p448
なお、利用する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 directoryTo 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が手に入りました。