[chef] knifeでroleで使われているrecipeを検索

chefの運用が始まって、サーバの設定のほとんどをchefでやるようになりましたが、その中で不便なことが出てきました。
recipeを変更してそれをサーバに反映させるときに、「はて?このrecipeはどこで使ってたっけ?」となってしまうのです。
今の環境では能動的にサーバの設定変更をしたいので、chef-clientはdaemonで起動しておらず、手動でchef-clientを実行してサーバに反映させています。
その場合にrecipeを変更した後、どのサーバでchef-clientを実行すればよいか探すことになり、場合によっては反映し忘れということも起こってしまいます。

knifeのsearchでrun_listを検索

そこで、knifeのsearch機能に着目してrun_listを検索することにしました。
使い方はこちらを参照。

Dashboard – Chef – Home – Chef Essentials – Search

knifeのsearchは具体的にはsolrのindexの検索です。
こんな感じで、run_listを検索しました。

$ knife search role "run_list:*MySQL*" -i
10 items found

db-server

stg-db
.
.
.

“-i”は検索結果のidのみを表示するオプションです。
これでrecipe[MySQL]を使っているroleを検索することができました。
ちなみに

$ knife search role "run_list:recipe[MySQL]"

としてもエラーが出てしまい検索できませんでしたので、上記のようなクエリーになったわけですが、多分もっとスタイリッシュなクエリーがあるはずです。それにはもっと勉強が必要なので今日はこれまで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です