成果物 => https://github.com/luckypool/veewee-ubuntu-saucy-64
はじめに
veeweeで base box をつくるモチベーションは下記のような感じ
- Vagrant は気軽に scrap & build できてアツい
- vagrantbox.esで各種 base box が配布されてて、気軽に使える
- しかし 人様のboxは何をどうやって作ったか分からん ので base box 自分でつくりたい
ってことでveeweeをつかってみました
なんで veewee?
packerでも base box を作ることができます。しかし、documentをみながら一つ一つ設定していくのは結構手間がかかります。また、基本設定はなんだかんだ同じようなはずなので、先人の知恵(veewee/templates)が詰まってるveeweeが便利そうです。また、状況によって template を自分好みに修正すれば良さそうです。
今回はVagrantで使うVirtualBoxのイメージを作ってみました。
以下はそのメモです。
About “veewee”
そもそも veewee って何か?
「VMイメージを簡単に作る便利ツール」です。gemになってます。
Vagrant, VirtualBox, VMWare, KVMなどのイメージをつくることができるようです。
- 詳しくはREADMEで => https://github.com/jedi4ever/veewee/blob/master/README.md
- docsはこちら => https://github.com/jedi4ever/veewee/tree/master/doc
Requirements
- https://github.com/jedi4ever/veewee/blob/master/doc/requirements.md
- 私の作業環境はmacで、rbenv使ってます
Installation
- https://github.com/jedi4ever/veewee/blob/master/doc/installation.md
- gem になってるので、簡単
gem i veewee
とかでOK - もしくは Gemfile に書いて、
bundle install
するなど
Using template
bundle exec veewee vbox templates | grep -i ubuntu
こんな感じで ubuntu の base box のテンプレート一覧が取得出来ます。
私は学生時代 yum よりは apt にお世話になってたので、 ubuntu-13.10-server-amd64
のテンプレートを使うことします。
bundle exec veewee vbox define ‘ubuntu-saucy-64’ ‘ubuntu-13.10-server-amd64’
すると definitions
ディレクトリ以下に下記のようなスクリプト(テンプレート)が作られます。
definitions
└── ubuntu-saucy-64
├── apt.sh
├── build_time.sh
├── chef.sh
├── cleanup.sh
├── definition.rb
├── parallels.sh
├── preseed.cfg
├── puppet.sh
├── ruby.sh
├── sudo.sh
├── vagrant.sh
└── vbox.sh
このままでもOKですが、私はpreseed.cfg
を2箇所だけ修正しました
- localeを
ja_JP.utf8
に - https://github.com/luckypool/veewee-ubuntu-saucy-64/blob/master/definitions/ubuntu-saucy-64/preseed.cfg#L2
- timezone を
Asia/Tokyo
に - https://github.com/luckypool/veewee-ubuntu-saucy-64/blob/master/definitions/ubuntu-saucy-64/preseed.cfg#L9
他にも修正したい場合はドキュメント参照しましょう
Build box
bundle exec veewee vbox build ubuntu-saucy-64
これで iso イメージのダウンロードから基本設定までやってくれます。GUIをオフにすることもできるようですが、勝手に設定されてくのを眺めるのも面白いです。
Export box
bundle exec veewee vbox export ubuntu-saucy-64
これで ubuntu-saucy-64.box
が生成されます
そして、ログにあるとおりにboxを追加して vagrant up
するだけです :)
vagrant box add ubuntu-saucy-64 ./ubuntu-saucy-64.box
vagrant init ubuntu-saucy-64
vagrant up
vagrant ssh
おわりに
成果物 => https://github.com/luckypool/veewee-ubuntu-saucy-64
- veewee は先人の知恵(veewee/templates)が詰まってる
- このtemplatesを参考に修正していけばカスタムbase boxがつくれる
- README.md見れば大抵のことは事足りるので簡単です
base box 作ったらあとは chef で煮るなり焼くなりして遊びましょう。
以上!