Consulでnodeの増減時に特定のスクリプトを実行させる
September 9, 2014
TL;DR
ConsulでSerfのEvent Handlerのようなものを試したメモ
main
Consulの0.4からWatchesという機能が追加されて
Serfのevent handlerのようなことができるようになった。
昨日つくったconsul-testに
- node01/config.json
{
"node_name": "node01",
"data_dir": "./node01/",
"bind_addr": "127.0.0.1",
"client_addr": "127.0.0.1",
"ui_dir": "./dist/",
"watches": [
{
"type": "nodes",
"handler": "./node01/hosts_update.rb"
}
]
}
watchesの設定を追加してみた。
hosts_update.rbでやっていることはシンプルで
nodesに変化があった場合に、標準入力でnodesの情報を取得し、
同ディレクトリに_hostsファイルを生成して、
nodeの名前とそのAddressを
hostsファイルに似せて出力するようにしている。
Consulには
SERF_EVENTのような
管理しているnodeの変化の状態をSTDINで受け取る方法はないのだろうか
雑談
このような簡単なスクリプトはGoで書いてもいいかもしれないけど
バイナリだけ置いてあるような状態の時に
_作成者を全面的に信用する_みたいな部活っぽい対応になりそう。
簡易スクリプトをGoで書いたらバイナリとそのソースファイルを
同ディレクトリに置いておくとかが良いんだろうか。