Packer で Vagrant の Box を作る
テンプレートを自分で作るのがどうにも面倒に感じてなかなか手を出せずにいた Packer ですが、調べてみたら結構テンプレートを公開してくれている方がいるようです。
misheska/basebox-packer
https://github.com/misheska/basebox-packer
shiguredo/packer-templates
https://github.com/shiguredo/packer-templates
hnakamur/my-packer-template-files
https://github.com/hnakamur/my-packer-template-files
nickchappell/packer-templates
https://github.com/nickchappell/packer-templates
という訳で今更ながら試してみました。
環境は Windows7 64bit です。
インストール
Downloads - Packer
http://www.packer.io/downloads.html
上記ページ内の [Windows] のところの [amd64] のリンクをクリックしてダウンロードします。
ダウンロードした際のバージョン 0.5.2 でした。
ダウンロードした 0.5.2_windows_amd64.zip を適当なフォルダに解凍し、フォルダを環境変数 PATH に追加します。
コマンドプロンプトから以下のようにバージョンが確認できればインストールは完了です。
>packer --version Packer v0.5.2
Box の作成
まずは適当なフォルダに移動して、テンプレートを clone します。
ここでは以下のテンプレートを使用させて頂きました。
misheska/basebox-packer
https://github.com/misheska/basebox-packer
>git clone git://github.com/misheska/basebox-packer.git
CentOS 6.5 を入れてみます。
CentOS 用のテンプレートのあるフォルダまで移動します。
>cd basebox-packer\template\centos\
配布されているテンプレートでは言語設定やキーボードなどが US になっているので、以下のファイルを変更します。
- basebox-packer\template\centos\http\ks.cfg
上記ファイルをエディタ等で開いて、以下の部分を変更しました。
lang ja_JP.UTF-8 keyboard jp106 timezone Asia/Tokyo
作成する Box のメモリやディスク容量などは以下のファイルで変更できます。
今回は以下のように変更しました。
・・・ "builders": [{ "vm_name": "centos65", "type": "vmware-iso", ・・・ "disk_size": 30420, "vmx_data": { "memsize": "1024", "numvcpus": "2", "cpuid.coresPerSocket": "1" } }, { "vm_name": "centos65", "type": "virtualbox-iso", ・・・ "disk_size": 30420, "vboxmanage": [ ["modifyvm", "{{.Name}}", "--memory", "1024"], ["modifyvm", "{{.Name}}", "--cpus", "2"] ] ・・・
もし VirtualBox 用の box しか作成しない、というような場合は変更するのは「"type": "virtualbox-iso"」側の該当箇所だけで OK なはずです。
準備が出来たので Box を作成します。
VirtualBox 用の box だけ作成すればいいので、「-only=virtualbox-iso」オプション付きでビルドします。
>packer build -only=virtualbox-iso centos65.json
これでしばらく待つと「basebox-packer\virtualbox」フォルダの下に Box ファイルが作成されます。
ちなみに上記の「misheska/basebox-packer」にある centos510.json のテンプレートを使った場合、手元の環境では build 中に「Unknown command unsupported_hardware」エラーになってしまいました。
その場合、ks.cfg 内の「unsupported_hardware」の行をコメントアウトしてから再度実行したら上手く行ったので、参考までに。
公開されているテンプレートを使うとかなり簡単に Box が作成できていいですね。
ありがたく使わせて頂きたいと思います。