akishin999の日記

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

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 が作成できていいですね。
ありがたく使わせて頂きたいと思います。