Azure CLI を使用して Azure IoT Edge モジュールをデプロイする

適用対象:IoT Edge 1.4 checkmark IoT Edge 1.4

重要

IoT Edge 1.4 がサポートされているリリースです。 以前のリリースの場合は、「IoT Edge を更新する」を参照してください。

ビジネス ロジックで Azure IoT Edge モジュールを作成したら、それらをデバイスにデプロイしてエッジで動作させます。 連携してデータを収集および処理する複数のモジュールがある場合は、一度にそのすべてをデプロイします。 それらを接続するルーティング規則も宣言できます。

Azure CLI は、IoT Edge などの Azure リソースを管理するための、オープンソースのクロス プラットフォーム コマンド ライン ツールです。 これを使用すると、Azure IoT Hub リソース、デバイス プロビジョニング サービス インスタンス、およびリンク済みのハブを簡単に管理することができます。 新しい IoT 拡張機能によって、Azure CLI には、デバイス管理、完全な IoT Edge 対応などの機能が追加されました。

この記事では、JSON 配置マニフェストを作成し、そのファイルを使用して IoT Edge デバイスにデプロイをプッシュする方法を示します。 共有タグに基づいて複数のデバイスをターゲットとするデプロイの作成については、「大規模な IoT Edge モジュールの展開と監視」をご覧ください。

前提条件

  • Azure サブスクリプション内の IoT ハブ

  • IoT Edge デバイス

    IoT Edge デバイスがセットアップされていない場合は、Azure 仮想マシンで作成できます。 クイックスタートの記事のいずれかの手順に従って、仮想 Linux デバイスを作成するか、仮想 Windows デバイスを作成します。

  • ご使用の環境内の Azure CLI。 Azure CLI のバージョンは、少なくとも 2.0.70 以降である必要があります。 検証するには、az --version を使用します。 このバージョンでは、az 拡張機能のコマンドがサポートされ、Knack コマンド フレームワークが導入されています。

  • Azure CLI 向け IoT 拡張機能

配置マニフェストを構成する

配置マニフェストは、デプロイするモジュール、モジュール間でのデータ フロー、およびモジュール ツインの目的のプロパティを記述した JSON ドキュメントです。 配置マニフェストのしくみとその作成方法について詳しくは、「IoT Edge モジュールをどのように使用、構成、および再利用できるかを理解する」をご覧ください。

Azure CLI を使用してモジュールをデプロイするには、配置マニフェストを .json ファイルとしてローカルに保存します。 コマンドを実行して構成をデバイスに適用するときには、次のセクションのファイル パスを使用します。

例として、1 つのモジュールでの基本的な配置マニフェストを次に示します。

Note

このサンプルのデプロイ マニフェストでは、IoT Edge エージェントとハブにスキーマ バージョン 1.1 を使用します。 スキーマ バージョン1.1 は IoT Edge バージョン 1.0.10 と共にリリースされており、モジュールの起動順序やルートの優先順位付けなどの機能を使用できます。

{
  "content": {
    "modulesContent": {
      "$edgeAgent": {
        "properties.desired": {
          "schemaVersion": "1.1",
          "runtime": {
            "type": "docker",
            "settings": {
              "minDockerVersion": "v1.25",
              "loggingOptions": "",
              "registryCredentials": {}
            }
          },
          "systemModules": {
            "edgeAgent": {
              "type": "docker",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-agent:1.1",
                "createOptions": "{}"
              }
            },
            "edgeHub": {
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
              }
            }
          },
          "modules": {
            "SimulatedTemperatureSensor": {
              "version": "1.0",
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0",
                "createOptions": "{}"
              }
            }
          }
        }
      },
      "$edgeHub": {
        "properties.desired": {
          "schemaVersion": "1.1",
          "routes": {
            "upstream": "FROM /messages/* INTO $upstream"
          },
          "storeAndForwardConfiguration": {
            "timeToLiveSecs": 7200
          }
        }
      },
      "SimulatedTemperatureSensor": {
        "properties.desired": {
          "SendData": true,
          "SendInterval": 5
        }
      }
    }
  }
}

デバイスにデプロイする

モジュールをデバイスにデプロイするには、モジュール情報で構成されている配置マニフェストを適用します。

デプロイ マニフェストを保存したフォルダーにディレクトリを変更します。 Visual Studio Code IoT Edge テンプレートのいずれかを使用している場合は、ソリューション ディレクトリの config フォルダー内の deployment.json ファイルを使用し、deployment.template.json ファイルは使用しません。

次のコマンドを使用して、IoT Edge デバイスに構成を適用します。

az iot edge set-modules --device-id [device id] --hub-name [hub name] --content [file path]

device ID パラメーターでは大文字と小文字が区別されます。 content パラメーターは、保存した配置マニフェスト ファイルを指します。

Screenshot showing the az iot edge set-modules command line output.

デバイス上のモジュールを表示する

モジュールをデバイスにデプロイした後で、そのすべてを次のコマンドで表示できます。

IoT Edge デバイス上のモジュールを参照します。

az iot hub module-identity list --device-id [device id] --hub-name [hub name]

device ID パラメーターでは大文字と小文字が区別されます。

Screenshot showing the az iot hub module-identity list command output.

次のステップ

大規模な IoT Edge モジュールの展開と監視の方法を学習します