Instantly share code, notes, and snippets.

Embed
What would you like to do?

入門Puppet感想

2012-05-09 達人出版会版

具体例はあっても仕組みやそうする理由の説明に乏しく、わかりにくかった。

manifest

具体的に裏で何が起こっているかに対する説明がないため、システムにmanifestを適用したとき何が起こるのかわからなくてこわい。 manifestに定義されてるリソースを列挙→依存関係でソート→順番に適用、だと想像しているが。

notify/subscribe

p39にrefresh eventが送信されるとあるが、それ以外のイベントもあるの?

class

分割単位

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

includeすると何が起こるのかわからない。 「対応するclassを読み込む(p.63)」とはどういう意味なのか? トップレベルでincludeするのとクラス定義内でincludeするのではどういう違いがあるのか? そもそもclassとはなんなのか。複数のリソースを内包するリソースなのか、それとも全く別の概念?

とにかくclassという概念がなんなのかわからなくてハチャメチャに混乱する。

リソース

ハイフンを含んだりネストしたリソースを指定する時ってどう書くのだろう。td-agent::plugin型の場合はTd-agent::Plugin['hoge']とか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment