Vagrantでknife-zeroを試そうとして挫折する人が多いらしいので、自分の考えるベストプラクティスを書いてみます。
追記:記事の一部を更新しました。詳細は末尾の更新履歴でご確認ください。
以下、Vagrantを開発環境で利用することを想定しています。
下記のドキュメントを参考にしました。
TL;DR
プライベートネットワークモードで立ち上げた2つのVMに、knife-zeroでレシピを適用する具体的な手順を説明します。
基本方針は下記の通り。
- コマンドラインでのパラメータを極力減らす。
- IPアドレスの記述は.envrcに集約して、その他の設定ファイルやコマンドラインでは環境変数を使う。
適切に設定ファイルを書けば、下記のような一連のコマンドでレシピの適用まで実行することができます。
% cd knife_zero_example
% direnv allow
% vagrant up
% bundle install --path=vendor/bundle --binstubs
% ./bin/berks vendor cookbooks
% ./bin/knife zero bootstrap $VAGRANT_HOST001
% ./bin/knife zero bootstrap $VAGRANT_HOST002
% ./bin/knife node run_list set host001.example build-essential
% ./bin/knife node run_list set host002.example build-essential
% ./bin/knife zero converge 'name:*.example' -a knife_zero.host