Vagrantは使っているけども、Packerは使っていないって方がだいたいかと思います。
まあそこまでやらずともvagrantboxで十分やんけ
よくわかる
自分も昔Packerでbox作った時に
超めんどくさかった。。。。(ビルドに時間がかかるので)
インフラに携わっている人とかには魅力を感じるかもしれませんが、デベロッパーにしてみたら
「ふーんそういうものがあるんだ。。。で??」
が正しいリアクションかもしれません。
でも他人が作ったboxとかよりも自分で作ったもののほうがブラックボックスではないよね
とか感じるときあるんすよ。(ほんのたまに)
自分も一回作った後は面倒でやっていなかったのですが普段お使いのPackerで作ったBoxがCentOS6.4でCentOSのバージョンも7まで上がったので重い腰あげようと思って
ググったら便利なものがありました。
Boxcutter
Packerの各OSでのテンプレートが配布されていて基本選ぶだけというものなので
これで使った時のメモになります
環境
- macosx10.8(ホストOS)
作る仮想インスタンスのOS(VirtualBoxで)
- CentOS7.0-x86_64
事前準備に必要なもの
- virtualbox ※入れていない方はそうだvirtualboxを使ってみようからvirtualboxの入手だけを試してください
参考にしたサイト
- Packer 用のテンプレート集 Box-Cutter を使ってみる
- このブログ読んで作ろうと思ったので、感謝です
Boxcutterを使わずに作成した時のメモ
Boxcutterで自分が作りたいOSを選択して Git cloneする
言語設定等が必要になるのでCloneしましょ
#cloneよりかはforkしたものをcloneしたほうがベスト
git clone https://github.com/box-cutter/centos-vm.git
自分が作りたいOSのcentosXX.jsonを編集する
これはビルドするファイルの設定ファイルになります。
iso_urlがデフォルトUSかどこかのサイトになっているので変更しましょう。
(ビルドに時間がかかる為やったほうが幸せになれる)
#iso_urlの部分を編集する
"iso_url": "http://ftp.riken.jp/Linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso",
TimeZoneの設定をする
デフォルトがUTCなのでAsia/Tokyoにする
timezone UTC #修正前
timezone Asia/Tokyo #修正後
ビルドする
ビルドに時間がかかります
packer build --only=virtualbox-iso centos70.json
これだけでVagrantに使用するBoxの出来上がりです。
ちなみに出来上がったboxをVagrantに設定するのは下記のようにします
#box url
config.vm.box_url = "./path/to/centos-vm/box/virtualbox/centos70-nocm-0.1.0.box"
今まで億劫だったboxのビルドの管理も大分楽してできるようになりました。
補足
自分でビルドのオレオレ設定を書きたい場合は
scripts/* 以下にビルド実行の色々な設定やらなにやらがありますのでそこを自分なりに編集してください