web-dev-qa-db-ja.com

外部プロビジョニングの依存関係を持つシェフのレシピ

私が見たすべてのChefの例では、自動スケーリングは非常に簡単に機能します。DBホスト、次にWebサーバーなどをプロビジョニングします。必要な数のWebサーバーを作成できます。すべてのWebサーバーが同じDBホストを使用します(変更は必要ありません)。

しかし、レシピ/ノードプロビジョニングクックブックで他のバックエンドノードの構成を変更する必要がある場合はどうなりますか? Chefでどうすればいいですか?たとえば、既存のBGPルートリフレクター(bird)があり、新しいバードエッジノードをプロビジョニングし、依存関係として、新しいiBGPピア構成を生成し、BGPルートリフレクターノードで構成ファイルを再読み取りする必要があります。

ベストプラクティスは何ですか? chef-Push-jobsを使用してBGPルートリフレクターノードに変更をプッシュする必要がありますか?

2
Yuri

Chefには、このためのシステムが社内にありません。大まかに言えば、あるサービスがネットワーク上の別のサービスに関する情報を見つけたい場合の「サービス検出」です。 Chefには、search() AP​​Iを介したシンプルなSDシステムがありますが、Consul、Eureka、mDNS/Autoconfなどの専用SDシステムもあります。

アクセスできる方法でサービスデータを取得したら、次の質問は、ネットワークを介して広がる更新をどのように処理するかです。 Chefは通常、X秒ごとにコンバージを実行するデーモンモードサービスを使用します。つまり、Xを60に設定すると、119秒後にすべてが更新されます。より高速なものが必要な場合は、あるノードから別のノードに通知をプッシュしたり、中央のオーケストレーションシステムを使用して元の変更をプッシュしてからカスケード更新を処理したりするなどのオプションがあります。 Chef Push Jobsは理論的にはここで使用できますが、実際にはお勧めしません。 Consul + Consul Templatesのようなものは、おそらく高速チャーン構成とSD更新に必要なものです。または、変更頻度の低いものについては、Chefのインターバル実行で処理することができます。

1
coderanger