Carpe Diem

備忘録

Packer で Virtualbox 用の VagrantBox を作成する

概要

PackerというプロビジョニングのBootstrapツールを使ってみます。

使ってみたメリット・デメリット

メリット

  • JSON形式で読みやすい
  • vagrant box, awsインスタンス, dockerイメージなど、複数の環境作成を画一的に記述できる
  • boxの生成をコード化できる

デメリット

  • Ansibleはansible_localしか使えない
  • デバッグしにくい(エラーが分かりにくい)
  • 他のvagrant boxをソースとして新しいboxを作れない(直接ISOから)

個人的にデメリットの3つ目が痛いです。Ansible等でビルドに失敗すると、ビルドのやり直しが相当面倒くさいです。

環境

インストール

バイナリパッケージを直接ダウンロードしてPATHを通します。

https://www.packer.io/downloads.html

から自分のシステムのバイナリをダウンロードしてください。

$ wget https://dl.bintray.com/mitchellh/packer/packer_0.7.5_darwin_amd64.zip

解凍して移動します。公式のおすすめは~/packer/usr/local/packerらしいです。今回は後者で。

$ unzip packer_0.7.5_linux_amd64.zip -d packer
$ sudo mv packer /usr/local/

PATHを設定します。.bash_profileに以下を追記してください。

export PATH=$PATH:/usr/local/packer/

反映します。

$ source .bash_profile

ちゃんと通っているか確認します。

$ packer version
Packer v0.7.5

Boxの作成

今回は簡単のため、Gitにあがっているサンプルコードを使います。

https://github.com/shiguredo/packer-templates

今回はUbuntuのBoxを作ろうと思います。

$ git clone git@github.com:shiguredo/packer-templates.git
$ packer-templates/ubuntu-14.04

template.jsonを読むと分かるのですが、virtualbox用とvmware用があります。
今回はvirtualbox用しか使わないのでそれを指定してビルドします。

$ packer build -only=virtualbox-iso template.json

自動でVirtualBoxが起動してBoxを構築してくれます。
コマンド等も自動で入力されるので遠隔操作されてる感じにも見えます。

確認

作られたboxを実際にvagrantで使ってみましょう

$ vagrant box add trusty64 ubuntu-14-04-x64-virtualbox.box

生成して起動してみます。

$ vagrant init trusty64
$ vagrant up

問題なく起動することが確認できます。お疲れ様でした。

参考