Edited at

Packerをつかって3ステップでVagrantのBoxを作る

More than 1 year has passed since last update.

Vagrantは使っているけども、Packerは使っていないって方がだいたいかと思います。

まあそこまでやらずともvagrantboxで十分やんけ


よくわかる

自分も昔Packerでbox作った時に


超めんどくさかった。。。。(ビルドに時間がかかるので)

インフラに携わっている人とかには魅力を感じるかもしれませんが、デベロッパーにしてみたら

「ふーんそういうものがあるんだ。。。で??」

が正しいリアクションかもしれません。


でも他人が作ったboxとかよりも自分で作ったもののほうがブラックボックスではないよね

とか感じるときあるんすよ。(ほんのたまに)

自分も一回作った後は面倒でやっていなかったのですが普段お使いのPackerで作ったBoxがCentOS6.4でCentOSのバージョンも7まで上がったので重い腰あげようと思って

ググったら便利なものがありました。


Boxcutter

Packerの各OSでのテンプレートが配布されていて基本選ぶだけというものなので

これで使った時のメモになります


環境


  • macosx10.8(ホストOS)


作る仮想インスタンスのOS(VirtualBoxで)


  • CentOS7.0-x86_64


事前準備に必要なもの


参考にしたサイト


Boxcutterを使わずに作成した時のメモ


Boxcutterで自分が作りたいOSを選択して Git cloneする

言語設定等が必要になるのでCloneしましょ


/path/to/dir

#cloneよりかはforkしたものをcloneしたほうがベスト

git clone https://github.com/box-cutter/centos-vm.git


自分が作りたいOSのcentosXX.jsonを編集する

これはビルドするファイルの設定ファイルになります。

iso_urlがデフォルトUSかどこかのサイトになっているので変更しましょう。

(ビルドに時間がかかる為やったほうが幸せになれる)


centos70.json

#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にする


http/ks7.cfg

timezone UTC #修正前

timezone Asia/Tokyo #修正後


ビルドする

ビルドに時間がかかります


/path/to/centos-vm

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/* 以下にビルド実行の色々な設定やらなにやらがありますのでそこを自分なりに編集してください