話した。
そして、先日のエントリでもちょこっと触れたんですが、Consulのクラスタで遊びまくるためのミドルウェア、 populus をいうものを作ってる。
今の実装(v0.0.4)でも、以下のようなDSLというかRubyのコード片を書いて、 sample.popl みたいなファイル名で保存して、
Populus.config do set :slack_webhook, "https://hooks.slack.com/services/XXXXXX" end Populus.watch :event, name: "echo" do cond {|data| data.any?{|d| d.has_key?('Payload')} } runs do |data| event = data.find{|d| d.has_key?('Payload')} Populus.logger.info "From populus!!!" Populus.logger.info Base64.decode64(event['Payload']) end end Populus.watch :event, name: "slack" do cond {|data| data.any?{|d| d.has_key?('Payload')} } runs do |data| event = data.first notify_to_slack("Hello!!!\nConsul event payload:\n>>> `#{event.inspect}`", channel: '#test', username: "Populus") end end
$ bundle exec populus watch sample.popl
といった感じでデーモンを立ち上げれば、ローカルにいるConsulに接続してイベントを監視してくれる。
いまのとこノードの変更やヘルスチェックの変更にキックするところまではできていない(一応すぐ対応できるはずなんだけど...)。
あとテストとかすら何もないので、試すにあたっては自己責任な感じで。
デモはこちら。
この日の発表のために間に合わせて作った感があって、早速コミットのstrokeが止まっているが、回復したらまたぼちぼちと開発を再開する予定。。しかし、逆に考えるとテックカンファレンスがなかったらいつまでたってもプロトタイプすらできていなかった可能性がある。テックカンファレンスがあって良かった。
発表後力尽きて、同僚の皆さんの発表をあまり集中して見られず申し訳なかったんだけれど、みんな衝撃的かつ高度な発表ばかりだったので、なんか僕もちゃんと頑張って良かったなと思いました。
ご参加の皆様ありがとうございました!