質問: rtn_rbenv の recipe を用いて itamae の cookbook/role を記述していました。 このとき、 rbenv でグローバルにインストールする ruby のバージョンは、次のように記述しました。 もろもろの設定 ------- ### node/some-service.yml ``` rtn_rbenv: user: ec2-user versions: "2.4.3": - bundler global: "2.4.3" ``` ### 実行時のコマンド ``` bundle exec itamae ssh -h ホスト名 -y node/some-service.yml role/some-service.rb ``` 質問 -- 今回、同じプロジェクトにいくつか他の service のプロヴィジョニングの方法を記述しようとしています。(もろもろのプロヴィジョニングをまとめて記述するプロジェクトを書いている) このとき、すべての異なる node.yml に対して、同じ rbenv の設定をコピーしていくのは、あまり dry ではないな、と思いました。 * itamae で、たとえば `共通.yml` のような設定を記述して、その設定を他の個別の node.yml などから include するようなことはできますでしょうか。 * もしくは、 `role/xxx-service.rb` で `include_recipe` する際に、デフォルトの設定値の設定などは行えますでしょうか。
回答: kondate にまさしくこのような機能があります。 kondate とは、 itamae に足りていないもろもろの機能を補って itamae を使えるようにするようなツールです。 kondate では、 node に与える情報を、 `properties/{environments, roles, nodes}` というディレクトリがあり、この中でそれぞれ「環境ごと、ロールごと、ノード(サーバー)ごと」にノードの情報を記述できるようすです。この設定は「node > role > environment」 の優先順位でマージされて、 recipe からは `node['フィールド名']` でアクセスできるようになります。