トップ «前の日記(2013-02-22) 最新 次の日記(2013-04-16)» 編集

人徳ゼロ日記


2013-03-07 Puppetモジュール書き方のBest Practiceは意外と知られていないので紹介する

_ Puppetモジュール書き方のBest Practiceは意外と知られていないので紹介する

Puppetを使い始めた時に困るのが、どのようにManifestを書くべきなのか、指針がなにもないことです。 雑誌の記事や、Webで紹介しているページでも、site.ppに直接リソースを書いてしまうような、 あくまでHallo World的な単純な例しかありませんでした。

Puppet Usersメーリングリストや、Puppet Forgetのモジュールの例、Puppetlabsの資料を色々見つつ、 手元で試していくと、だんだん書き方が分かってきました。 微妙なのが、色々見ているうちに何となくコミュニティでの傾向が分かってきただけで、 決定版になるようなページがないところです。

せっかくなので、過去を思い出しながら、参考にしたページを書いておきます。 まずはPuppetlabs公式ページにあるものから。 こうやって振り返ってみても、あらためてまとまって書いてあるページは少ないですねえ。 よくこれで使っているものだ。

  • Style Guide
    いわゆるコーディング規則です。 コメントの書き方、クォーテーションの書き方など良くある字句レベルでの決まりがかいてありますが、 後半のclass関係になると、設計レベルの話も入っていて参考になります。 ぜひ、ルール一つ一つちゃんと読むことをおすすめします。
  • Module Fundamentals
    Puppetの再利用の単位であるmoduleの基本的な考え方を説明してあります。 個人的には最重要な情報です。モジュール名、クラス名、テンプレート名の、 使う側での名前と実際のディレクトリ配置の対応が書いてあります。 以前はこの情報がまとまっていなくて、期待するclassが読めない、 テンプレートが読めない、というミスに苦しんだこともありました。 Puppet使う人は必ず読んだほうが良いです。
  • Writing Great Modules: An Introduction
    Puppetlabsのブログ記事です。主に、Puppet Forgeに登録するような汎用性の高く十分テストされた モジュールの作り方です。記事の中で作り方を説明しているというよりは、 他のドキュメントを紹介しているような形です。

その他、module内のクラス構成を

  • modulename::init
  • modulename::install
  • modulename::config_xxx (xxxは設定ファイル名)
  • modulename::service

にしろ、という話はどこかの資料で見た記憶があるのですが……、思い出せませんでした。 もしかしたら、Puppet Forgeのモジュールを色々見ているうちに 標準構成が分かってきただけだったかもしれません。これはまた後日。