チュートリアル: Device Update for Azure IoT Hub を使用してプロキシの更新を完了する

まだの場合は、「Device Update for Azure IoT Hub によるプロキシ更新の使用」を参照してください。

テスト デバイスまたは仮想マシンのセットアップ

このチュートリアルでは、例として Ubuntu Server 18.04 LTS 仮想マシン (VM) を使用します。

Device Update のエージェントと依存関係をインストールする

  1. APT パッケージ リポジトリに packages.microsoft.com を登録します。

    sudo apt-get update
    
    sudo apt install curl
    
    curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ~/microsoft-prod.list
    
    sudo cp ~/microsoft-prod.list /etc/apt/sources.list.d/
    
    curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > ~/microsoft.gpg
    
    sudo cp ~/microsoft.gpg /etc/apt/trusted.gpg.d/
    
    sudo apt-get update
    
  2. IoT デバイスに deviceupdate-agent をインストールします。 packages.microsoft.com から、Device Update の最新の Debian ファイルをダウンロードします。

    sudo apt-get install deviceupdate-agent
    

    あるいは、ダウンロードした Debian ファイルをテスト VM にコピーします。 お使いのコンピューターで PowerShell を使用している場合は、次のシェル コマンドを実行します。

    scp <path to the .deb file> tester@<your vm's ip address>:~
    

    その後、VM にリモートでログインし、"ホーム" フォルダーで次のシェル コマンドを実行します。

    #go to home folder 
    cd ~
    #install latest Device Update agent
    sudo apt-get install ./<debian file name from the previous step>
    
  3. Azure IoT Hub にアクセスして、IoT デバイスのデバイス更新モジュールのプライマリ接続文字列をコピーします。 du-config. json ファイルで、connectionData フィールドの既定値を、このプライマリ接続文字列で置き換えます。

    sudo nano /etc/adu/du-config.json  
    

    注意

    代わりに、デバイスのプライマリ接続文字列をコピーすることができますが、デバイス更新モジュールの文字列を使用することをお勧めします。 モジュールの設定の詳細については、「デバイス更新エージェントのプロビジョニング」を参照してください。

  4. /etc/adu/du-diagnostics-config.json にログ収集の正しい設定が含まれていることを確認します。 次に例を示します。

    {
      "logComponents":[
        {
          "componentName":"adu",
           "logPath":"/var/log/adu/"
        },
        {
          "componentName":"do",
          "logPath":"/var/log/deliveryoptimization-agent/"
        }
      ],
      "maxKilobytesToUploadPerLogPath":50
    }
    
  5. デバイス更新エージェントを再起動します。

    sudo systemctl restart deviceupdate-agent
    

モック コンポーネントを設定する

テストとデモを目的として、デバイス上に以下のモック コンポーネントを作成します。

  • 3 つのモーター
  • 2 つのカメラ
  • "hostfs"
  • "rootfs"

重要

前記のコンポーネント構成は、libcontoso-component-enumerator.so という名前のサンプルのコンポーネント列挙子拡張機能の実装に基づいています。 このモック コンポーネントのインベントリ データ ファイル /usr/local/contoso-devices/components-inventory.json も必要です。

  1. demo フォルダーをテスト VM のホーム ディレクトリにコピーします。 その後、次のコマンドを実行して、必要なファイルを適切な場所にコピーします。

    `~/demo/tools/reset-demo-components.sh` 
    

    reset-demo-components.sh コマンドによって、以下の手順が自動的に実行されます。

    • components-inventory.json がコピーされ、/usr/local/contoso-devices フォルダーに追加されます。

    • Contoso のコンポーネント列挙子拡張機能 (libcontoso-component-enumerator.so) が Assets フォルダーからコピーされ、/var/lib/adu/extensions/sources フォルダーに追加されます。

    • この拡張機能が登録されます。

      sudo /usr/bin/AducIotAgent -E /var/lib/adu/extensions/sources/libcontoso-component-enumerator.so
      

サンプルの更新プログラムをインポートする

まだ Device Update のアカウントとインスタンスを作成していない場合は作成します (IoT ハブの構成を含む)。 その後、以下の手順を開始します。

  1. 最新のデバイス更新プログラムのリリース[Assets] の下から、プロキシの更新プログラムのインポート マニフェストとイメージをダウンロードします。

  2. Azure portal にサインインし、Device Update がある IoT Hub に移動します。 左側のペインで、[デバイス管理]>[更新] を選択します。

  3. [更新] タブを選択します。

  4. [+ 新しい更新プログラムのインポート] を選択します。

  5. [+ ストレージ コンテナーから選択] を選んでから、ストレージ アカウントとコンテナーを選択します。

    ストレージ コンテナーからのインポートを選択するためのボタンを示すスクリーンショット。

  6. [アップロード] を選択し、手順 1. でダウンロードしたファイルを追加します。

  7. 親のインポー トマニフェスト、子のインポート マニフェスト、およびペイロード ファイルをコンテナーにアップロードします。

    下記の例では、スマート掃除機デバイスに接続されているカメラを更新するためにアップロードされるサンプル ファイルを示します。 無線での更新の前にカメラをオフにする、インストール前スクリプトも含まれています。

    この例では、親のインポート マニフェストは contoso.Virtual-Vacuum-virtual-camera.1.4.importmanifest.json です。 カメラを更新するための詳細が含まれる子のインポート マニフェストは、Contoso.Virtual-Vacuum.3.3.importmanifest.json です。 マニフェスト ファイル名はいずれも、必要な形式に従い、末尾が .importmanifest. json になっています。

    スマート掃除機デバイスに接続されているカメラを更新するためにアップロードされたサンプル ファイルを示すスクリーンショット。

  8. [選択] を選択します。

  9. UI に、デバイスの更新プログラムにインポートされるファイルの一覧が表示されます。 [更新のインポート] を選択します。

    一覧表示されているファイルと、更新プログラムをインポートするためのボタンを示すスクリーンショット。

  10. インポート プロセスが開始され、画面が [インポートの履歴] セクションに変わります。 [更新] を選択すると、インポート プロセスが終了するまで進行状況が表示されます。 インポートは、更新プログラムのサイズに応じて、数分で終了することも、より長い時間がかかることもあります。

  11. [状態] 列に、インポートが成功したことが示されたら、[使用可能な更新プログラム] タブを選択します。これで、インポートされた更新プログラムが表示されるはずです。

    一覧に追加されているインポートされた更新プログラムを示すスクリーンショット。

インポート プロセスの詳細については、Device Update への更新プログラムのインポートに関する記事を参照してください。

デバイス グループを表示する

Device Update ではグループを使用してデバイスを整理します。 割り当てられたタグと互換性プロパティに基づいて、Device Update で自動的にデバイスがグループに並べ替えられます。 各デバイスは 1 つのグループにのみ属しますが、グループには複数のサブグループを含めることができ、さまざまなデバイス クラスを並べ替えることができます。

  1. ページの上部にある [グループとデプロイ] タブに移動します。

    グループ化されていないデバイスを示すスクリーンショット。

  2. グループの一覧と更新プログラムのコンプライアンス チャートを表示します。 更新プログラムのコンプライアンス チャートには、さまざまなコンプライアンス対応状態 (最新の更新状態利用可能な新しい更新プログラムがある更新プログラムのインストールが進行中) にあるデバイスの数が表示されます。 更新プログラムのコンプライアンスの詳細についてはこちらを参照してください。

    [更新] のコンプライアンス ビューを示すスクリーンショット。

  3. このチュートリアルで設定したシミュレートされたデバイスを含むデバイス グループと、新しいグループ内のデバイスで使用できる更新プログラムが表示されます。 グループのデバイス クラスの要件を満たしていないデバイスがある場合は、対応する無効なグループに表示されます。 このビューから新しいユーザー定義グループに最適な利用可能な更新プログラムをデプロイするには、グループの横にある [デプロイ] を選択します。

タグとグループの詳細については、デバイス グループの管理に関する記事を参照してください。

更新プログラムをデプロイする

  1. グループが作成されると、デバイス グループで利用可能な新しい更新プログラムが表示され、[最適な更新プログラム] の下にその更新プログラムへのリンクが表示されます (一度更新する必要がある場合があります)。

    コンプライアンスの詳細については、「デバイス更新のコンプライアンス」を参照してください。

  2. グループ名をクリックして、ターゲット グループを選択します。 [グループの基本] の下にグループの詳細が表示されます。

    グループの詳細

  3. デプロイを開始するには、[現在のデプロイ] タブに移動します。[使用できる更新プログラム] セクションで、目的の更新プログラムの横にある [デプロイ] リンクをクリックします。 特定のグループに最適で使用可能な更新プログラムには、"最適" の強調表示が付けられます。

    更新プログラムを選択する

  4. デプロイを直ちに開始するか、今後開始するようにスケジュールし、[作成] を選択します。

    Create deployment

  5. [デプロイの詳細] の [状態] が [アクティブ] になり、デプロイされた更新プログラムに "(デプロイ中)" というマークが付けられます。

    デプロイがアクティブ

  6. コンプライアンス チャートを表示します。 更新が進行中であると表示されます。

  7. デバイスが正常に更新されると、コンプライアンス チャートとデプロイの詳細が、同じ内容を反映するように更新されていることがわかります。

    更新に成功しました

更新プログラムの展開を監視する

  1. ページの上部にある [デプロイ履歴] タブを選択します。

    デプロイ履歴

  2. 作成したデプロイの横にある [詳細] リンクを選択します。

    展開の詳細

  3. [更新] を選択し、最新の状態の詳細を表示します。

これで、Device Update for IoT Hub を使用したプロキシの更新の全体が正常に完了しました。

リソースをクリーンアップする

不要になったら、Device Update のアカウント、インスタンス、IoT Hub、IoT デバイスをクリーンアップします。

次のステップ