リモート監視ソリューション アクセラレータをローカルでデプロイする - Visual Studio
この記事では、リモート監視ソリューション アクセラレータをテストおよび開発のためにローカル コンピューターにデプロイする方法を示します。 また、Visual Studio でマイクロ サービスを実行する方法も示します。 ローカルのマイクロサービス デプロイで使用するクラウド サービスは、クラウド内の IoT Hub、Cosmos DB、Azure Stream Analytics、および Azure Time Series Insights サービスです。
リモート監視ソリューション アクセラレータをローカル コンピューター上の Docker で実行する場合、リモート監視ソリューション アクセラレータをローカルでデプロイする - Docker に関するページを参照してください。
前提条件
リモート監視ソリューション アクセラレータによって使用される Azure サービスをデプロイするには、アクティブな Azure サブスクリプションが必要です。
アカウントがない場合は、無料試用版のアカウントを数分で作成することができます。 詳細については、「Azure の無料試用版サイト」を参照してください。
コンピューターのセットアップ
ローカル デプロイを完了するには、ローカル開発マシンにインストールされた次のツールが必要です。
- Git
- Docker
- Visual Studio
- Nginx
- Node.js v8 - このソフトウェアは、スクリプトが Azure リソースを作成するために使用する PCS CLI の前提条件です。 Node.js v10 は使用しないでください。
注意
Visual Studio は Windows と Mac で利用できます。
ソース コードをダウンロードする
リモート監視ソース コード リポジトリには、マイクロサービスの Docker イメージを実行するために必要なソース コードと Docker 構成ファイルが含まれています。
複製してローカル バージョンのリポジトリを作成するには、コマンドライン環境を使用してローカル コンピューター上の適切なフォルダーに移動します。 その後、次のいずれかのコマンド セットを実行して、.NET リポジトリを複製します。
.NET マイクロサービスの実装の最新バージョンをダウンロードするには、次のコマンドを実行します。
git clone --recurse-submodules https://github.com/Azure/azure-iot-pcs-remote-monitoring-dotnet.git
# To retrieve the latest submodules, run the following command:
cd azure-iot-pcs-remote-monitoring-dotnet
git submodule foreach git pull origin master
注意
これらのコマンドでは、マイクロサービスのローカル実行に使用するスクリプトだけでなく、すべてのマイクロサービスのソース コードがダウンロードされます。 Docker 内のマイクロサービスを実行するためのソース コードは必要ありませんが、後でソリューション アクセラレータを変更し、その変更をローカルにテストすることを予定している場合は、ソース コードが役に立ちます。
Azure サービスをデプロイする
この記事ではマイクロサービスをローカルに実行する方法を示しますが、これらはクラウド内で実行されている Azure サービスに依存します。 Azure サービスをデプロイするには、次のスクリプトを使用します。 次のスクリプトの例では、Windows コンピューターで .NET リポジトリを使用していることを前提としています。 別の環境で作業している場合は、パス、ファイル拡張子、およびパスの区切り記号を適切に調整してください。
新しい Azure リソースを作成する
必要な Azure リソースをまだ作成していない場合は、次の手順のようにします。
コマンドライン環境で、リポジトリの複製コピーの \services\scripts\local\launch フォルダーに移動します。
次のコマンドを実行して pcs CLI ツールをインストールし、Azure アカウントにサインインします。
npm install -g iot-solutions pcs login
start.cmd スクリプトを実行します。 このスクリプトでは、次の情報を入力するよう求められます。
ソリューション名。
使用する Azure サブスクリプション。
使用する Azure データセンターの場所。
スクリプトで、指定したソリューション名のリソース グループが Azure に作成されます。 このリソース グループには、ソリューション アクセラレータが使用する Azure リソースが含まれます。 該当するリソースが不要になった場合は、このリソース グループを削除できます。
また、このスクリプトは、プレフィックス PCS を持つ一連の環境変数をローカル コンピューターに追加します。 これらの環境変数では、リモート監視で Azure Key Vault リソースから読み取れるようにするための詳細が提供されます。 リモート監視では、この Key Vault リソースからその構成値が読み取られます。
ヒント
スクリプトが完了すると、環境変数もホーム フォルダー>\.pcs\<solution name.env> という<ファイルに保存されます。 これらは、将来のソリューション アクセラレータのデプロイに使用できます。 ローカル コンピューターに設定されたすべての環境変数は、docker-compose を実行するときに services\scripts\local\.env ファイルの値をオーバーライドすることに注意してください。
コマンドライン環境を終了します。
既存の Azure リソースを使用する
必要な Azure リソースを既に作成している場合は、ローカル コンピューターに対応する環境変数を作成します。 以下に対する環境変数を設定します。
- PCS_KEYVAULT_NAME - Azure Key Vault リソースの名前
- PCS_AAD_APPID - AAD アプリケーションの ID
- PCS_AAD_APPSECRET - AAD アプリケーションのシークレット
構成値はこの Azure Key Vault リソースから読み取られます。 これらの環境変数は、デプロイの<ホーム フォルダー>\.pcs\<solution name.env> ファイルに保存できます。 ローカル コンピューターに設定された環境変数は、docker-compose の実行時に services\scripts\local\.env ファイルの値をオーバーライドすることに注意してください。
マイクロサービスで必要な構成の一部は、初期デプロイ上に作成された Key Vault インスタンスに格納されます。 必要に応じて、Key Vault 内の対応する変数を変更する必要があります。
マイクロサービスを実行する
このセクションでは、リモート監視マイクロサービスを実行します。 Web UI をネイティブで実行し、Docker でデバイス シミュレーション サービスを実行し、Visual Studio でマイクロサービスを実行します。
デバイス シミュレーション サービスを実行する
新しいコマンド プロンプト ウィンドウを開いて、前のセクションで start.cmd スクリプトによって設定された環境変数にアクセスできることを確認します。
デバイス シミュレーション サービス用の Docker コンテナーを起動するには、次のコマンドを実行します。 このサービスは、リモート監視ソリューション用のデバイスをシミュレートします。
<path_to_cloned_repository>\services\device-simulation\scripts\docker\run.cmd
ローカル コンピューター上のその他すべてのマイクロサービスをデプロイする
次の手順では、Visual Studio のリモート監視マイクロサービスを実行する方法を示します。
- Visual Studio を起動します。
- リポジトリのローカル コピー内の services フォルダーで、remote-monitoring.sln ソリューションを開きます。
- ソリューション エクスプローラーでソリューションを右クリックして、[プロパティ] をクリックします。
- [共通プロパティ>のスタートアップ] Projectを選択します。
-
[マルチ スタートアップ プロジェクト] を選択し、以下のプロジェクトで [アクション] を [開始] に設定します。
- WebService (asa-manager\WebService)
- WebService (auth\WebService)
- WebService (config\WebService)
- WebService (device-telemetry\WebService)
- WebService (iothub-manager\WebService)
- WebService (storage-adapter\WebService)
- [OK] をクリックして変更を保存します。
- [ デバッグ > の開始デバッグ ] をクリックして、ローカル コンピューターで Web サービスをビルドして実行します。
Web サービスごとにコマンド プロンプトと Web ブラウザー ウィンドウが開きます。 コマンド プロンプトには実行中のサービスの出力が表示され、ブラウザー ウィンドウでは状態を監視することができます。 コマンド プロンプトや Web ページを閉じると Web サービスが停止するため、閉じないでください。
Stream Analytics ジョブの開始
Stream Analytics ジョブを開始するには、次の手順に従います。
- Azure Portal に移動します。
- ソリューション用に作成されたリソース グループに移動します。 このリソース グループの名前は、start.cmd スクリプトを実行したときにソリューション用に選択した名前です。
- リソースの一覧で [Stream Analytics ジョブ] をクリックします。
- Stream Analytics ジョブの [概要] ページで、[開始] ボタンをクリックします。 次に、[開始] をクリックしてジョブをすぐに開始します。
Web UI を実行する
この手順では、Web UI を開始します。 新しいコマンド プロンプト ウィンドウを開いて、start.cmd スクリプトによって設定された環境変数にアクセスできることを確認します。 リポジトリのローカル コピーにある webui フォルダーに移動し、次のコマンドを実行します。
npm install
npm start
起動が完了すると、ブラウザーに http://localhost:3000/dashboard ページが表示されます。 このページには、エラーが存在する可能性があります。 エラーがない状態でアプリケーションを表示するには、次の手順を実行してください。
NGINX を構成および実行する
ローカル コンピューターで実行されているマイクロサービスと Web アプリケーションをリンクするリバース プロキシ サーバーを設定します。
- リポジトリのローカル コピーにある webui\scripts\localhost フォルダーから nginx.conf ファイルを nginx\conf インストール ディレクトリにコピーします。
- nginx を実行します。
nginx の実行の詳細については、Windowsの nginx を参照してください。
ダッシュボードに接続する
リモート監視ソリューションのダッシュボードにアクセスするには、ブラウザーで http://localhost:9000 に移動します。
クリーンアップ
不必要な課金を避けるために、テストを完了したら、Azure サブスクリプションからクラウド サービスを削除します。 サービスを削除するには、Azure portal に移動し、start.cmd スクリプトが作成したリソース グループを削除します。
また、GitHub からソース コードを複製するときに作成されたリモート監視リポジトリのローカル コピーを削除することもできます。
次のステップ
これで、リモート監視ソリューションのデプロイが完了しました。次の手順はソリューション ダッシュボードの機能を確認することです。