2014年4月24日木曜日

PackerでVagrantのboxを作成

今までVagrantのboxはVeeweeを使って作っていたのだけど、今回からPackerを使ってみることにした。

PackerはVeeweeみたいにテンプレートが付属していないので自分で用意する必要があるのだけど、一から自分で書くのはハマりどころも多くて大変だなーと思っててずっと手を出していなかったんだよね。
でもまぁみんな野良テンプレートとか作ってるだろうから、それをベースにカスタマイズしてみるかーと検索してたら、Opscode改めChefがBentoっていうPackerのテンプレート集を出しているのを知ったのでこれを使うことにした。

Packerのインストール

Packer
http://www.packer.io/

公式サイトからバイナリパッケージをインストール。

Macの場合はHomebrewからもインストールできる。

brew tap homebrew/binary
brew install packer

Bentoをダウンロード

Bento by opscode
http://opscode.github.io/bento/

公式サイトからアーカイブをダウンロードするかgitでcloneする。
きっとどんどん新しくなっていくだろうからcloneしておくのがいいかな。

git clone https://github.com/opscode/bento.git

boxをビルドしてみる

bentoのpacker用テンプレートが入っているディレクトリに移動してpacker buildを実行する。
カスタマイズしたければJSONファイルをいじる。

cd bento/packer
packer build -only=virtualbox-iso \
             -var 'chef_version=latest' \
             -var 'mirror=http://ftp.iij.ad.jp/pub/linux/centos' \
             centos-6.5-x86_64.json

いくつかオプションを指定してCentOS 6.5のboxを作成してみた。
そのままだと、テンプレートで定義されてる全builderでboxが生成されてしまうので、-onlyでVirtualBox用のみ生成するようにした。
-varはテンプレート内の変数を上書き指定するオプションで、ここではISOイメージのミラーサイトを国内にして、最新のChefをインストールするように指定した。
ちなみに、chef_versionを指定しない場合は、omnibus-chefはインストールされないようになっていた。

これでbuildsディレクトリの下にboxが生成されるので、あとはvagrant box addしておしまい。

vagrant box add CentOS-6.5-x86_64 ../builds/virtualbox/opscode_centos-6.5_chef-latest.box

0 件のコメント:

コメントを投稿