今まで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 件のコメント:
コメントを投稿