😀

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

2022/11/28に公開

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かどこかのサイトになっているので変更しましょう。
(ビルドに時間がかかる為やったほうが幸せになれる)

#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 #修正後

ビルドする

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

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

Discussion