keepalived.confのシンタックスチェックツール「keepalived-check」「haskell-keepalived 」が凄い!
id:viverさんとid:maoeさんが(7月ぐらいに)やってくれてました。
ずいぶん前からkeepalived.confのシンタックスチェックをするプログラムないかなーと思ってました。個人的にはバックアップ側のkeepalivedにまず反映して問題がないならマスタにも反映する、という運用手順をとっていますが、はやりsyntax checkerがあるのとないのとでは安心感が大違いです。
また、構築フェーズでは、keepalived.confをあれやこれやといじり試行錯誤するわけですが、confの書式が間違っていてもkeepalivedは警告も出さずスッコリなかったものとして知らん顔で起動するので、「設定してるはずの通りに動かない!え!なんで?なんで?><?」というドはまりに陥りがちです。でも、syntax checkerがあればもう安心です。
ためしに自分とこのkeepalived.confをチェッカにかけてみました。
まず、frsyukiさんのkeepalived-checkはRubyで書かれています。必要なのはruby >= 1.8.6だけ、というお手軽さと、パーサ部のきれいさがポイントです。特に後者は秀逸で、ぼくが拡張パッチの文法定義を追加したときも、keepalived-check.rbのAccept周辺を初見で見よう見まねでいじってできてしまったぐらいです。
試しに実行してみると、"SSL_HELLO"なんて文法は知らない、とエラーが出ています。-vをつけて実行すると、スタックトレースなども表示され、keepalived-check.rbに手を入れる際の参考になります。さて、"SSL_HELLO"はKLabのkeepalived-extcheckパッチを当てると使えるようになる文法なので、エラーが出るのは同然ですが、-e オプションをつけるとこのパッチで増える文法も解釈するような動作になります。
$ ./keepalived-check keepalived.conf unknown keys "SSL_HELLO" at real_server $ ./keepalived-check -e keepalived.conf ok
次に、maoeさんのhaskell-keepalivedです。が、
$ runhaskell Setup.hs build Preprocessing library keepalived-0.0.1... Preprocessing executables for keepalived-0.0.1... Building keepalived-0.0.1... /usr/bin/ar: creating dist/build/libHSkeepalived-0.0.1.a [8 of 8] Compiling Main ( bin/Kc.hs, dist/build/kc/kc-tmp/Main.o ) bin/Kc.hs:206:28: Couldn't match expected type `AppConfig' against inferred type `a b' In the expression: do case getOpt Permute (commandOpts cmd) opts of (options, files, []) -> let ... in ... (_, _, errs) -> defaultAppConfig In the definition of `processAppConfig': processAppConfig cmd opts = do case getOpt Permute (commandOpts cmd) opts of (options, files, []) -> ... (_, _, errs) -> defaultAppConfig
こんなのが出てビルドできませんでした。。。><
ただ、出初めの頃に試したときはちゃんとビルドもできて、文法チェックもちゃんとできてました。今、ビルドできないのはぼくの環境の不備と環境の整え方を知らないせいだと思います…
追記
d:id:maoe:20090928:1254159495 でmaeoさんがバイナリ配布と補足をしてくださってます!
というわけで、ぼくはkeepalived.confの文法ミスのお悩みから解放され、以前よりも積極的で前向きな性格になり、充実した毎日を楽しまれているようです。
ありがたやありがたや。