別CookBookの attribute ファイルを読み込むタイミング

CB A と Bがあり、Bのレシピ実行時にAのattributeファイルを参照したい場合を考える。

  • Bの metadata.rb で "depends A" と記載した場合

→ Bのattributeファイル読み込みの前にAのが読み込まれる。

  • Bの metadata.rb で "depends A" と書かず、attribute ファイルで "include_attribute A"、もしくは、recipe で"node.include_attribute A" と記載した場合

→ include_attribute したタイミングで読み込まれる。

例えば、Aの attribute ファイルで、node の attribute により処理分岐しているような場合、Bで予め一部の attribute を指定してからAの attribute ファイルを評価するといったことが可能。

なんでこんな事を調べたかというと、java CB を wrap したかったから。
oracle_rpm レシピで、何故か package の :upgrade を実行しており、予めパッケージが入ってないとエラーが出るというバグ(だよね)があった。で、java CB の attribute ファイルでは、java.install_flavor とかでCASE文書いているので、wrapしたCBのほうでそれらの値を指定しておきたかったわけだ。