akishin999の日記

調べた事などを書いて行きます。

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 で決まりかなー。