4

Windows での従来のプッシュ展開モデルとは対照的に、プル展開をセットアップする方法を探しています。

最適な状況は次のとおりです。

  • ファイルをマスターサーバーにデプロイします
  • 子サーバーは、マスターが特定の時間または時間間隔で更新されたかどうかを確認します。
  • マスターサーバーに更新が含まれている場合、更新をダウンロードしたり、スクリプトを実行したりします (ナントのようなものですか?)。

ソリューションはできるだけ軽量で、Windows 環境で実行する必要があります。

ChefSmartFrogを調べましたが、この特定の状況には適していません。

編集:複数のソフトウェアがデプロイされています。これらは、データベース スクリプト、Windows サービス、および Web サイトです。要件と認証の詳細が他の子とは異なるため、各子には固有のスクリプトがあります。

編集2: これまでのところ、人々は素晴らしい答えを思いつきましたが、最終的なソリューションは本当に安全で、内部で実行され、すべてが同時に発生する必要があります. これは、コンプライアンス、業界の規制、およびバージョンの問題 (例: データベース サーバーがサービスと同期していない) によるものです。私が念頭に置いている最終的な解決策は、マスター上の FPT サーバーと、インストール ルーチン (サービスの開始、停止、SQL スクリプトのインストール、インストールのログ記録) を実行するために子で実行されている Nant のようなものです。これは現在利用できるものに最も近いものですが、nant はプッシュ ベースで動作するため理想的ではありません (誰かまたはプログラム (cruisecontrol など) がスクリプトを実行したときにのみ実行されます)。Windows で適切な PULL 展開を行うためのソリューションが必要であると確信しています。

4

7 に答える 7

1

あなたは、Windows Software Deployment を実行したいと言いながら、NAnt などのビルド スクリプト言語について話しています。私だったら、InstallShield を使用して Windows インストーラー パッケージを作成し、その UpdateManager サービスを利用して、クライアントが更新サーバーから更新プログラムを取得できるようにします。これらのツールは長い間存在し、証明されており、再発明するよりもはるかに安全です.

于 2010-08-14T23:36:45.903 に答える
0

展開するアプリの種類については 100% 明確ではありませんが、これがクライアント/エンド ユーザーに配布される Windows フォーム アプリケーションである場合は、ClickOnceを見たことがありますか? これには、クライアントからデルタを自動的にポーリングおよびプルするモードがあります。しかし、他のサーバーに配布しているようですか?

于 2010-08-02T11:37:48.487 に答える
0

数年前、私はあなたが探していることを実行するシステムを実装しました。

クライアント アプリケーションでは、ClickOnce 配置を使用しましたが、これは非常にうまく機能します。Windows サービスと Web サイトについては、自分たちに合うものが見つからなかったため、独自のシステムを実装する必要がありました。

レプリケーションを試みたデータベース (sql2005) では、これはうまくいかず、多くの時間とプロセッサ パワーが必要でした。バックアップを作成してデータを復元することにしました (クライアント サーバーではすべて読み取り専用でした)。

手短に

1) マスター サーバーは、新しいバージョンの Web サービス、Web サイト、およびデータベースを含む複数の zip ファイルを保持します。

2) クライアント サーバーの Windows サービスは、新しいバージョンのソフトウェアがないか、(ftp を使用して) マスター サーバーを毎日スキャンします。

3) 見つかった場合 - Windows サービスをアンインストールし、ファイルを置き換えてから再インストールします - Web サイトのファイルを置き換えます - データベースを置き換えます

于 2010-08-12T07:40:43.567 に答える
0

Windows ライブ同期

Windows Live Sync について考えたことはありますか?

無料で、2 つのフォルダーを設定するだけです。マスター サーバーに 1 つ、子サーバーに 1 つ。

設定が完了すると、すべてのファイルが自動的に同期されます。

更新は非常に簡単です。マスター フォルダーを更新すると、自動的に子側にレプリケートされます。

それは完全に火と忘れです。

私はこのシステム (サーバーにデプロイされたもの) を 6 つの「子」ノードで使用し、毎日 1000 個のファイルを簡単に同期しています。

編集1:

言い忘れましたが、ファイルは暗号化されており、逆接続を使用しているため、ルーター/ファイアウォールの構成はありません.

于 2010-08-13T07:48:54.090 に答える
0

私は過去に多くの成功を収めたこの正確な使用法のために、クルーズコントロール.netとsubversionの組み合わせを使用しました。

Subversion は安全で、マスター サーバーとして機能します。クルーズ コントロール .net は、subversion と nant の両方を完全にサポートします。もちろん、もっと多くのことができます。私たちが属する業界とその要件 (ユーティリティ) のために、以前は非常に複雑なロジックを使用していました。

于 2010-08-14T12:58:36.930 に答える
0

以前、私がセントルイスで彼らのウェブサイトの「誕生日パーティー」のために誰かと話していたときに、この状況について聞いたことがあります。それはあなただったのだろうか。

いずれにせよ、これにはWeb 配置ツール (MSDeploy)を使用します。MSDeploy は、何よりも同期ツールに似ています。コンセプトは、ソースと宛先があり、それらを同期したいということです。通常のプッシュ展開を行っている場合、ビルド サーバーはビルドの出力を各ターゲット サーバーと同期します。プル デプロイを実行する場合は、必要なファイルを共有の場所 (このマスター サーバーと呼んでいます) にドロップするだけで、クライアント マシンはそのマスター サーバーと同期できます。

質問で言及した詳細を次に示します。

ファイルをマスター サーバー にデプロイする ビルド サーバーは、MSDeploy を使用してファイルをマスター サーバーにデプロイできます。

子サーバーは、マスターが特定の時間または時間間隔で更新されたかどうかを確認します。 これに対する直接的なサポートはありませんが、実際には 2 つのことがあります。1 つ目: スクリプト (.cmd/PowerShell/MSBuild/etc) から MSDeploy を実行すると、新しいバージョンがあるかどうかを判断できます。これを行うには、出力フォルダーの最上位にバージョン ファイルをドロップします。次に、スクリプトが開始されたら、サーバー上のバージョンを読み取ります。新しいものが利用可能な場合は、新しい新しい展開を開始します。事 2 : MSDeploy は増分展開をサポートしているため、新しい展開を開始しても変更は行われません。DB デプロイメントについて話し始めると、これはトリッキーですが、あなたの場合はおそらく賢明ではありません。事1

マスター サーバーに更新プログラムが含まれている場合は、更新プログラムをダウンロードしたり、スクリプトを実行したり します。これは、msdeploy.exe が行うことです。

その他の関連商品

  • 増分公開: Web に 1000 個のファイルが含まれていて、変更されたのが 5 つだけの場合、それらの 5 つだけが展開されます。
  • カスタマイズ: MSDeploy はパラメーター化をサポートしているため、クライアントが同期を開始するときに、そのクライアントに特定の値を指定できます。これらを使用すると、web.conig/.xml ファイル/テキスト ファイルなどを含むすべてのタイプのファイルを変更できます。カスタム IIS 設定を提供することもできます
  • 認証: IIS 7 を使用している場合は、通常の Windows 認証を使用できます。WMSvcユーザーを作成して使用できます。
  • セキュリティ: これには WMSvc を使用できます

これはあなたのニーズに合っていますか?

于 2010-08-14T22:45:03.383 に答える
0

ドメインコントローラーを実行していますか? それらを「宣伝」できるようにするには?それ以上軽くなることはありません。UI が表示されるようにパスのこの行を変更しますが、少なくとも PowerShell ではスクリプト可能にする必要があります。

"C:\Windows\SysWOW64\rundll32.exe" "C:\Windows\SysWOW64\shell32.dll",#44 "C:\Windows\SysWOW64\CCM\SMSRAP.cpl",アドバタイズされたプログラムの実行

于 2010-08-14T02:59:57.320 に答える