Packer 用のテンプレート集 Box-Cutter を使ってみる
以前試した Packer 用のテンプレート misheska/basebox-packer が Box-Cutter に移動してしまい、若干使い方も変わったようなので試してみました。
packer 自体のインストールは割愛。
Box-Cutter
https://github.com/box-cutter
上記の Organization アカウントの下にディストリビューション毎にプロジェクトが作成されているので、必要なものを clone します。
ここでは CentOS 用のプロジェクトを clone しました。
% git clone https://github.com/box-cutter/centos-vm.git
作成したいバージョンの json ファイルを編集します。
ファイル名で大体どれを弄ればいいかは分かるはず。
% cd centos-vm
% vim centos65.json
disk_size と memsize を変更しました。
"disk_size": 30420, "vmx_data": { "memsize": "1024", "numvcpus": "2", "cpuid.coresPerSocket": "1" } ・ ・ ・ "disk_size": 30420, "vboxmanage": [ ["modifyvm", "{{.Name}}", "--memory", "1024"], ["modifyvm", "{{.Name}}", "--cpus", "2"] ]
日本語環境にしたいので以下のキックスタートファイルを編集します。
% vim http/ks6.cfg
変更したのは以下。
lang ja_JP.UTF-8
keyboard jp106
timezone Asia/Tokyo
OS イメージの ISO ファイルのダウンロード先を変更したい場合は Makefile も変更する必要があります。
% vim Makefile
以下のように使用したいバージョンの ISO の URL が定義されているので、必要に応じて最寄りのミラーに変更するなどします。
・ ・ ・ CENTOS59_X86_64 ?= http://mirror.symnds.com/distributions/CentOS-vault/5.9/isos/x86_64/CentOS-5.9-x86_64-bin-DVD-1of2.iso CENTOS59_I386 ?= http://mirror.symnds.com/distributions/CentOS-vault/5.9/isos/i386/CentOS-5.9-i386-bin-DVD-1of2.iso CENTOS510_X86_64 ?= http://mirror.stanford.edu/yum/pub/centos/5.10/isos/x86_64/CentOS-5.10-x86_64-bin-DVD-1of2.iso CENTOS510_I386 ?= http://mirrors.kernel.org/centos/5.10/isos/i386/CentOS-5.10-i386-bin-DVD-1of2.iso CENTOS64_X86_64 ?= http://mirror.symnds.com/distributions/CentOS-vault/6.4/isos/x86_64/CentOS-6.4-x86_64-bin-DVD1.iso CENTOS64_I386 ?= http://mirror.symnds.com/distributions/CentOS-vault/6.4/isos/i386/CentOS-6.4-i386-bin-DVD1.iso CENTOS65_X86_64 ?= http://mirrors.kernel.org/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-bin-DVD1.iso CENTOS65_I386 ?= http://mirrors.kernel.org/centos/6.5/isos/i386/CentOS-6.5-i386-bin-DVD1.iso ・ ・ ・
これで準備は完了。
Box-Cutter では packer コマンドを直接実行するのではなく、make を使うようになっています。
同梱の Makefile でビルド可能なターゲットは以下で確認できます。
% make list Prepend 'vmware/' or 'virtualbox/' to build only one target platform: make vmware/centos65 Targets: centos65 centos65-desktop centos64 centos64-desktop centos510 centos59 centos65-i386 centos64-i386 centos510-i386 centos59-i386
この中から必要なものを選択してビルドします。
メッセージにあるように、ビルドしたいターゲット名の前に 'vmware/' または 'virtualbox/' を付けることで特定の仮想環境向けの Box のみ作成するように指示することが出来るようです。
packer コマンドで「-only=virtualbox-iso」とか「-only=vmware-iso」指定するのと同じですね。
ここでは virtualbox の box だけ必要だったので以下のようにしました。
% make virtualbox/centos65
途中 VirtualBox が起動してインストールが進んで行きます。
暫く待つと以下に Box が生成されました。
% ls box/virtualbox
centos65-nocm.box
ざっと試したところこんな感じ。
テンプレートの種類も充実しているので、 Packer で Box 作成する際は Box-Cutter で決まりかなー。