cfengine よりも puppet がよさげ
I, newbie » Links Roundup 経由で puppet というシステム管理ツールを知って以来ずっと気になっていたのですが、このエントリの著者さんが OSC2007 の発表資料(PDF)で「Puppet is so sexy.」と書かれているのを見て、本気で触ってみることにしました。
puppet がどんなものかは、上記資料とか だ!日記さんのエントリ にも書かれているのですが、本家の Cfengine vs. Puppet というエントリから cfengine との違いを一部適当に意訳してみると、こんな感じです。
- next-generation version of cfengine ということで、cfengine をベースとしながらも、より良いものを目指している。
- リソース抽象化レイヤーにより、OS やディストリビューションの違いを意識しなくても良い。
- タスクの実行順序を制御できる。(cfengine ではできないor難しいらしい。)
- 設定ファイルで記述する内部言語が強力になっている。
- type の拡張が簡単。
- Ruby でできている。
というわけで、cfengine の導入を検討して、こんなエントリ を書いたりしてたのですが、cfengine は捨てて puppet でいこうかな、と思ってます。
emacs 用のヘルパーモード なんかも提供されているのがさらに好印象です。vim 用もあるし。
それから、まだ Experimental ですが、puppetshow という Rails でできたウェブインターフェースもあるようです。
Plagger について本に書きました
タイトルは MASHUP++ です。その名の通り、マッシュアップを主題とした本なのですが、主に自分でマッシュアップな開発をしてみたい、という方向けの本で、自分は「マッシュアップとプラガブルなフレームワーク」をテーマに、Plagger プラグインの開発方法について書きました。
内容としては、プラグイン開発の基礎知識として、
- 内部データ形式である Plagger::Feed と Plagger::Entry
- フィードデータがどの様に入力、加工、出力されるのか
- プラグインの用途と種類にはどんなものがあるのか
- 各プラグインの関係や実行フェーズ、実行順序
といったことを解説しています。また、後半は
- 各フェーズの実際のプラグインソースコードを引用しながらの解説
- プラグインの雛形生成、ドキュメント、テストの書き方といったプラグイン開発の流れ
といった感じになっています。プラグインを開発してみたいけど、どこから手をつけていいのかわからない、という方に是非ご覧頂きたいです。
他にも さうなまん さん、鹿倉公維 さん、セトウナオ さん、タナカミノル さんといった .fla の執筆陣による Flash を主体としたマッシュアップ(タナカさんは今回は Flash ではないですが)や、CATWALK の三宅涼さん、澤久裕昭さんによる、これぞ正当なマッシュアップ、といった感じの PHP と JavaScript によるマッシュアップ、そして、タナカミノルさんと原央樹 さんによる、Gainerというハードウェアを使ったマッシュアップなど、バリエーション豊かなマッシュアップがソースコードつきで解説されています。必読。
Assurer 近況
Assurer の最近の状況など。
franck が開発に参加
Plagger コミッタでもある franck がジョインしてくれ、プラグインやパッチなどを送ってくれたり、新しいアイデアを提案/実装してくれたりしてます。この週末も素敵な機能を実装してくれるみたいです。
Notify フェーズの追加
Notify フェーズを追加して、Notify::IRC を実装してみました。ほとんど Plagger からのパクリです。
Kwalify によるコンフィグバリデーション
Assurer::ConfigLoader に、Kwalify によるコンフィグバリデーション処理が追加されました。実行時に設定ファイルのミスをお知らせしてくれます。
プラグインの場合は、当然プラグイン毎に設定内容が異なるわけですが、この辺りもちゃんと対応しています。
シェルモードのブラッシュアップ
$ assurer.pl -c config.yaml --role=web
といった形で、シェルモード起動時に、ターゲットとなるロールを指定できるのですが、機能追加により、
assurer> !on app1.foo.com app2.foo.com do uptime assurer> !on /.*.foo.com/ do uptime assurer> !with web db do uptime assurer> !with /web|mail/ do uptime
といった形で、シェルモード中にもターゲットホストやロールが指定できるようになっています。正規表現も使えます。
また、シェルモードからもテストが実行できるようになっています。こんな感じで。
assurer> !test SSH on app1.foo.com assurer> !test SSH on /.*.foo.com/ assurer> !test SSH with web assurer> !test SSH with /web|mail/
並列度のコントロールと分散処理
テストの実行は assurer_test.pl を POE::Wheel::Run で起動することにより、並列実行させていたのですが、POE::Component::JobQueue を併用することにより、並列度をコントロールできるようにしました。
また、
exec_on:
- host: localhost
priority: 3
- host: host0.example.com
priority: 2
- host: host1.example.cm
priority: 1
といった設定を行うことにより、複数のマシンで分散してテストを行う、ということができるようになってます。priority は今のところ設定しても意味はなく、ラウンドロビンでテストジョブを割り当ててるのですが、今後は priority に応じて割りてるジョブの数を調整したり、各マシンの負荷状況を見て調整したり、といったことができるようにしたいと考えています。
Test::WWW::Mechanize プラグイン
Test::WWW::Mechanize をつかったテストも組み込めるようにしました。
まあ、こんな感じです。あまり詳しく書くと YAPC で話すネタがなくなるので、この辺で。
Older posts: 1 2