makotan _at_ gmail dot com

新たなnodeの情報をサーバに連携する方法

管理系サーバから定期的にnodeへ接続してたりする場合、新たなnodeを追加するとnodeの情報を管理系サーバへ通知する必要がある。
しかもAWSは管理系サーバのIPアドレスすら確実に固定とは言いきれない
そんな動的な環境でchefを使うとどうなるのか・・・

前提条件

サーバはテキストファイルを随時読み込んで対象のnode情報を知ることが出来る
(読み込み用の外部APIがあればタイミングをchefから与えることも可能)

使うもの

http://docs.opscode.com/essentials_search_partial.html
前に書いたchef一番のお気に入り機能w

使い方

recipeで対象にしたい(role等を持ってる)nodeを検索
サーバが読み込む対象ファイルを生成するようにtemplateを用意
そのrecipeをサーバにaddする
これでnodeを追加してしばらく放置すると勝手にサーバが検出するようになる

感想

実は検索機能を見つけたときに思いついてて、実際にやってみたらこれが快適すぎてびっくりした
問題があるとすれば、nodeの追加〜サーバの検出までに初期設定で最大1時間かかることかなぁ〜
nodeの追加後にサーバで更新recipe実行すれば最短で数分くらいまで短くなるから運用次第だと思う
しかし・・・この機能は使える!