Packer ではまる

Ansible を試そうと思って、構成管理するサーバをとりあえず Vagrant を使って建てようとした。
box ファイルをどうしようと悩んだが Packer を使って自分で作ってみる事にした。
0.5.0 で後方互換を無くす仕様変更があり、ハマったのでメモ。
# 典型的な Yak Shaving


Packer のパッケージを(0.5.1)をダウンロードして $PATH を通した。
テンプレートは時雨堂に CentOS6.5 があったので、それを借りる事にした。

$ git clone https://github.com/shiguredo/packer-templates.git
$ cd packer-template
$ cd centos-6.5
$ packer build -only=virtualbox template.json 
Failed to create build 'virtualbox': 

No builder returned for name: virtualbox

エラーになった…。
どうやら 0.5.1 で virtualbox, vmware という名前はそれぞれ virtualbox-iso, vmware-iso に変更になった模様。
packer/CHANGELOG.md at master · hashicorp/packer · GitHub
template.jsonvirtualbox, vmwarevirtualbox-iso, vmware-iso に変更する。

packer build -only=virtualbox-iso template.json
virtualbox-iso output will be in this color.

2 error(s) occurred:

* Unknown configuration key: virtualbox
* Unknown configuration key: vmware

最初どこでエラーになってるのか分からなかったけど、post-processors 内で発生してる事が分かった。

"post-processors": [
    { 
      "type": "vagrant",
      "override": {
        "virtualbox": {
          "output": "centos-6-5-x64-virtualbox.box"
        },
        "vmware": { 
          "output": "centos-6-5-x64-vmware.box"
        }
      }
    }   
  ],

こんな感じで override の下に virtualbox, vmware を移動させる。

$ packer build -only=virtualbox-iso template.json
virtualbox-iso output will be in this color.
略

あとは完了するのをまったり待つだけ。
Packer 便利!!


時雨堂のテンプレートには Pull Request を送ったらマージして貰えた。
あざす!