Chef についてのメモ

概要

chef について、現時点でわかっている、知っておいたら役立ちそうなメモを書いておく。 いわゆる実際ソース追えばわかるんだけど、まだソース追ってないので段階での現在わかっている挙動まとめ。

attribute の読み込み順について

  • attributes/default.rb が一番最初に読み込まれる
  • attributes/hoge.rb などの、attributes ディレクトリの他のファイルが辞書順に読み込まれる
  • node の値は各ファイルで上書きをすることができる

libraries について

  • libraries/hoge.rb などに、 Chef::Recipe::Hoge などのクラスを定義して、recipe から呼び出すことができる。
    • Hoge.fuga_method として recipe から使用可能。
  • 他のレシピを同時に実行するときでも、Hoge.fuga_method は使用可能。
  • libraries/mymodule.rb などに、 module MyModule などのモジュールを定義して、 recipe から呼び出すことができる。
    • 自分がイマ実行しているレシピのみでモジュールを使用したい場合は、レシピに extend MyModule して特異メソッドとしてメソッドを生やす。
    • 他のレシピでもモジュールを使用したい場合は、::Chef::Recipe.send(:include, MyModule) として Chef::Recipe クラスに include することで、my_module_method を呼び出せる。

chef 実行時のレシピについて

  • 各レシピ、例えば first, second っていうレシピがあったとすると、それらは Chef::Recipe インスタンスである。
    • chef 実行時に self をみればわかる
このエントリーをはてなブックマークに追加