1

シナリオは次のとおりです。

Chef-Server に SSH 接続できます。しかし、どの Chef-Clients にも SSHで接続できません。これが私の仕事のやり方です: ロールを変更または作成するためのワークステーションがあります。すべてのシェフ クライアントはデーモンとして実行されているため、起動すると、状態の変化に気づき、自身の更新を開始します。

次に、これらのクライアントでコードの展開を構成する必要があります。そのためにアプリケーション クックブックを使用し、ワークステーションを使用してロールにレシピを追加できると考えていました。しかし、シェフクライアントが起動してリビジョンの変更を見つけるたびに、デプロイメントが発生することはありませんか? オンデマンドの展開が必要です。コードが展開の準備が整ったときにのみ展開し、その時点までの他のコミットでは展開したくありません。

どうすればこれを達成できますか?

4

2 に答える 2

1

いくつかの質問

コードのデプロイの準備はいつですか? どうやって知る?それが繰り返し可能なプロセスである場合、それをレシピにコーディングできませんか? 繰り返し可能なプロセスでない場合は、自動化できるようにする必要があります

IE はキュウリのテストを実行し、それらがすべて合格した場合は展開し、それ以外は何もしませんか?

Artifactory からフィードし、Web API を使用して、利用可能な最新のインストーラーを確認します。以前にインストールしたものと同じ場合 (レジストリ キーを確認/作成することによって実行)、このビルドは既にインストールされているため、スキップします。同じでない場合は、インストールします。これがまったく同じシナリオではないことはわかっていますが、ここでカスタム コードが必要になるように感じます。

それか、データバッグの値を利用して、コードの状態に応じて install=true または false を指定します。デプロイするときはデータバッグ内のプロジェクト a のインストール項目を更新し、残りの時間は false に設定します。値が true の場合にのみレシピが続行されますか?

于 2012-11-11T15:20:09.413 に答える
0

HEAD をいつでもデプロイできるブランチを用意してみませんか? コードが世に出る準備ができたときにのみ、このブランチにプッシュしてください。そうすれば、シェフによって同期されているリポジトリの中間の不安定な状態について心配する必要はありません。もちろん、変更を確認する前に、クライアントが起動して同期するのを待つ必要があります。そのため、遅延が問題になる場合、これは機能しません。

于 2013-09-20T21:36:31.677 に答える