2017-12-11 23 views
0

.Net Core 2.0 WebアプリケーションをAzureにデプロイするときに、CI/CDパイプラインから目的の結果が得られません。Azure .Net Core Web Appの展開変数

テスト環境にデプロイすると、すべてが機能しています。 Azureポータルの開発アプリケーションのAppSettingsセクションにある正しいデータベースにリンクするために、ConnectionString:Mainという設定を追加しました。

私は本番環境に展開したいと考えています。問題は、2つの本番データベースがあり、そのうちの1つだけがいつでも「ライブ」であるということです。私がしたいことは、各データベース用に2つのリリース定義を作成し、いずれかを使用してデプロイする能力を持つことです。

AppSettings.jsonのローカル接続文字列を以前の.Netバージョンのようにオーバーライドするリリース変数を追加するだけで済みますか、より複雑なソリューションが必要ですか?

+0

ライブプロダクションデータベースが2つある理由を最初に詳しく説明できますか?これは展開スロットで解決できる問題ではありませんか? –

+0

システムには、複数時間プロセスであるレガシーシステムからの毎日の更新が必要なため、更新が行われている間にユーザーにアベイラビリティが必要であるため、2つの本番データベースがあります。アプリケーションは、更新後に最新の更新データベースを指す必要があります。接続が切り替わった24時間後にデータがゆっくり更新されます(理想的ではありませんが、レガシーシステムが交換されるまで必要です)。私はあなたがデプロイメントスロットが行く方法であるかもしれないと思うかもしれないと思います、私はオートスワップが機能であることに気づいていませんでした。 – SBFrancies

答えて

0

あなたはAzureのアプリケーションサービスの展開タスクのJSON variable substitution機能を使用することができ、例えば、以下のサンプル中のConnectionStringの値を置き換えるには、リリース定義でData.DefaultConnection.ConnectionStringとしてリリース/環境変数を定義することができます。

{ 
    "Data": { 
    "DefaultConnection": { 
     "ConnectionString": "Server=(localdb)\SQLEXPRESS;Database=MyDB;Trusted_Connection=True" 
    } 
    } 
} 
+0

ありがとう、これは私が探していたものですが、他の答えは私のアプローチについて考えるのをやめさせてくれました。 – SBFrancies

0

AzureでASP.NETコアアプリケーションを使用する場合は、Azure Key Vaultを使用して秘密を保存することをお勧めします。これにより、バージョンコントロールまたはVSTSに資格情報が格納されていないことが確認されます。

展開中に構成値を実際に更新する場合は、展開中にパラメータをトークン化して置き換えることができます。これにはthis marketplace taskを使用できます。 Managing Config for .NET Core Web App Deployments with Tokenizer and ReplaceTokens Tasksには、これらのタスクの使用方法が記載されています。

0

ARM templateでデプロイメントを作成し、環境ごとに異なるパラメータファイルを作成することで、これを達成できるはずです。テンプレートを使用して、関連するアプリ設定を置き換えることができます。これらの設定は、Azureポータルのアプリケーション設定に挿入されます。これらの設定は、リポジトリ内の設定ファイルにチェックインされている設定を上書きします。

関連する問題