2012-05-09 達人出版会版
具体例はあっても仕組みやそうする理由の説明に乏しく、わかりにくかった。
具体的に裏で何が起こっているかに対する説明がないため、システムにmanifestを適用したとき何が起こるのかわからなくてこわい。 manifestに定義されてるリソースを列挙→依存関係でソート→順番に適用、だと想像しているが。
p39にrefresh eventが送信されるとあるが、それ以外のイベントもあるの?
13章でtd-agentの定義をtd-agent::install/config/serviceに分割、14章でそれらを別ファイルにしているが、そうするありがたみがわからない。この規模だったらベタに書いたほうがいいのでは?
例ではclass td-agentの構成要素間の依存関係をclass td-agent内に記述しているがこれはなぜなのか。td-agent::configにtd-agent::serviceへの依存を書くのではだめなのか。
Class['td-agent::install']
-> Class['td-agent::config']
~> Class['td-agent::service']
という部分、どう解釈していいのかかなり悩んだ。
- この3行でひとつの文を構成している
Class['td-agent::install'] -> Class['td-agent::config']
かつClass['td-agent::config'] ~> Class['td-agent::service']
という関係を定義している
という理解でいいんだろうか
クラスの指定はリソースの指定と酷似している(Classというリソースタイプに見える)が、リソースに対してもこの記法は有効なのだろうか。
15章(p.84)で
class app::td-agent {
include ::td-agent
include app::td-agent::config
Class['::td-agent::install']
-> Class['app::td-agent::config']
~> Class['::td-agent::service']
}
とあるが、説明がないのでこの記述の意味がむずかしすぎる。
最終的に
Class['::td-agent::install'] -> Class['app::td-agent::config']
Class['app::td-agent::config'] ~> Class['::td-agent::service']
Class['td-agent::install'] -> Class['td-agent::config']
Class['td-agent::config'] ~> Class['td-agent::service']
という依存関係が定義される、でいいのかな。
includeすると何が起こるのかわからない。 「対応するclassを読み込む(p.63)」とはどういう意味なのか? トップレベルでincludeするのとクラス定義内でincludeするのではどういう違いがあるのか? そもそもclassとはなんなのか。複数のリソースを内包するリソースなのか、それとも全く別の概念?
とにかくclassという概念がなんなのかわからなくてハチャメチャに混乱する。
ハイフンを含んだりネストしたリソースを指定する時ってどう書くのだろう。td-agent::plugin
型の場合はTd-agent::Plugin['hoge']
とか?