単純なアプリサーバー/データベースサーバーのセットアップについて考えてみます。データベースサーバーの場所を示す値をアプリサーバーに設定し、データベースサーバーにいくつかのアクセス許可を設定してアプリサーバーからの接続のみを許可する必要があります。
search(:node、 "role:db-server")
と
search(:node、 "role:app-server")
どちらのマシンのレシピ実行からも機能して、必要な情報を取得できます。しかし、検索を実行するときに1つのサーバーが存在しない場合はどうなるでしょうか。「この実行を続行しないでください」と言って、完了していないとマークする方法はありますか。そうすれば、次にchef-clientがそのマシンで実行されたときに、再試行されます。
あるいは、このユースケースに役立つ、私が見逃している気の利いたシェフがいますか(「通知」と「サブスクライブ」は、私が知る限り、それらは私が望むものとほぼ同じであるように見えます)ノード内で発生するものに関心があります)より良いですか?私が検討しているもう1つのことは、スリープ/チェックループを設定して、一方の実行を効果的に一時停止し、もう一方のサーバーが必要な場所に到達するようにすることですが、そのソリューションはかなりエレガントではなく、より複雑な設定でデッドロックの問題が発生する傾向があります。