次の方法で共有


チュートリアル: Ubuntu 22.04 パッケージ エージェントを使用した Azure Device Update for IoT Hub

Device Update for Azure IoT Hub では、イメージベース、パッケージベース、スクリプトベースの更新がサポートされています。 このチュートリアルでは、Device Update Ubuntu Server 22.04 x64 パッケージ エージェントを使用してエンド ツー エンドのパッケージ更新を実行し、Azure IoT Edge を更新する方法を示します。

パッケージ ベースの更新プログラムは、特定のデバイス コンポーネントまたはアプリケーションのみを変更することを対象としています。 これらの更新プログラムは、イメージ ベースの更新より帯域幅の消費量がより少なく、ダウンロードとインストールの時間がより短く済むので、デバイスのダウンタイムを減らし、イメージを作成するオーバーヘッドを回避できます。 パッケージベースの更新では、APT マニフェストが、指定されたパッケージおよびその依存関係を指定されたリポジトリからダウンロードしてインストールするために必要な情報を、Device Update エージェントに提供します。

このチュートリアルでは Microsoft Defender for IoT のインストールについて説明しますが、同様の手順を使用すれば、IoT Edge 自体やそれが使用するコンテナー エンジンなどのその他のパッケージを更新できます。 このチュートリアルで取り上げるツールと概念は、異なる OS プラットフォーム構成を使用する場合にも当てはまります。

このチュートリアルでは、次の作業を行いました。

  • デバイス更新エージェントとその依存関係をダウンロードしてインストールする
  • デバイスにグループ タグを追加します。
  • パッケージの更新プログラムをインポートします。
  • パッケージの更新プログラムをデプロイします。
  • 更新プログラムのデプロイ履歴を表示します。

前提条件

デバイスの準備

Ubuntu 22.04 LTS 仮想マシン (VM) を短時間で設定するために、このチュートリアルでは便宜上、cloud-init ベースの Azure Resource Manager (ARM) テンプレートを使用します。 このテンプレートは、IoT Edge ランタイムと Device Update パッケージ エージェントの両方をインストールした後、指定した IoT Edge デバイスの接続文字列を使用して、プロビジョニング情報を使用してデバイスを自動的に構成します。 また、ARM テンプレートを使用すれば、セットアップを完了するために Secure Shell (SSH) セッションを開始する必要はありません。

  1. このテンプレートを実行するには、次の [Azure へのデプロイ] ボタンを選択します。

    iotedge-vm-deploy の [Azure へのデプロイ] ボタンのスクリーンショット.

  2. 次の情報を入力します。

    • サブスクリプション: VM のデプロイ先のアクティブな Azure サブスクリプション。
    • リソース グループ: VM とそのリソースを含める既存または新規のリソース グループ。
    • リージョン: VM のデプロイ先の地理的リージョン。これは、リソース グループの場所が規定値となります。
    • Dns ラベル プレフィックス: VM のホスト名に付けるプレフィックスの値。
    • 管理者のユーザー名: デプロイ時にルート権限が与えられるユーザー名。
    • 認証の種類: [sshPublicKey] または [パスワード] を選択します。
    • [管理者パスワード][SSH 公開キー ソース][SSH キーの種類][キー ペア名]: 認証の種類の選択に基づくパスワードまたは SSH 公開キー情報。
    • VM のサイズ: デプロイする VM のサイズ
    • Ubuntu のOS バージョン: [22_04-lts] のままにします。
    • デバイスの接続文字列: 先ほどコピーした IoT Edge の接続文字列。
  3. ページ下部にある [確認と作成] を選択します。 検証に成功したら、[作成] を選択してテンプレートのデプロイを開始します。

  4. デプロイが正常に完了したことを確認し、デプロイの完了後、インストール後の処理と構成で IoT Edge とデバイス パッケージの更新エージェントがインストールされるまで数分待ちます。

  5. 選択したリソース グループに VM リソースが表示されます。 vm-0000000000000 という形式のコンピューター名をメモします。 VM 名を選択し、VM の [概要] ページで、[DNS 名] を書き留めます。これは <dnsLabelPrefix>.<location>.cloudapp.azure.com 形式です。

    IoT Edge VM の DNS 名を示すスクリーンショット。

ヒント

設定後にこの VM に SSH 接続する場合は、コマンド ssh <admin username>@<DNS name> を使用して、関連付けられている [DNS 名] を使用します。

Device Update エージェントを VM にインストールする

重要

Azure Device Update for IoT Hub ソフトウェアには、次のライセンス条項が適用されます。

エージェントを使用する前に、ライセンス条項を参照してください。 エージェントをインストールして使用すると、これらの条項に同意したものと見なされます。 ライセンス条項に同意しない場合は、Device Update エージェントを使用できません。

  1. VM に Device Update エージェントをインストールするには、次のコマンドを実行します。

    sudo apt-get install deviceupdate-agent
    
  2. 次のコマンドを使用して、du-config.json 構成の詳細ファイルを開きます。

    sudo nano /etc/adu/du-config.json
    
  3. ファイル内のすべての <placeholder> 値を独自の構成に置き換えます。 connectionType"AIS" として設定し、connectionData を空の文字列として設定します。 ファイルの例については、「du-config.json ファイル コンテンツの例」を参照してください。

  4. 次のコマンドを実行して、Device Update エージェントを再起動します。

    sudo systemctl restart deviceupdate-agent
    

Note

このデバイスでシミュレーター エージェントを以前に使用した場合は、次のコマンドを実行して APT ハンドラーを呼び出し、このチュートリアルの無線でのパッケージの更新をデプロイできます。

sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/apt:1'

デバイスにグループ タグを追加する

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

  1. Device Update インスタンスの Azure portal の [IoT Hub] ページで、左側のナビゲーションから [デバイス管理] >[デバイス] の順に選択します。

  2. デバイスの [デバイス ツイン] または [モジュール ID] ツインに移動します。

  3. デバイス ツインまたは Device Update エージェントの [モジュール ID ツイン] ファイルで、既存の Device Update タグ値を null 値に設定して削除し、以下の新たな Device Update グループ タグに追加します。

    Device Update エージェントでデバイス ID を使用している場合は、デバイス ツインでそれらの変更を行います。 Device Update エージェント モジュールでモジュール ID を使用している場合は、[モジュール ID ツイン] でタグを追加します。

    "tags": {
        "ADUGroup": "<GroupTagValue>"
    },
    

    次のスクリーンショットは、タグを追加するファイル内の場所を示しています。

    タグ情報を含むツインを示すスクリーンショット。

  4. [保存] を選択します。

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

Tutorial_IoTEdge_PackageUpdate.zip ファイルには、チュートリアルに必要なファイルが含まれています。

  1. GitHub の Device Update リリース ページの最新リリースの [アセット] セクションから Tutorial_IoTEdge_PackageUpdate.zip ファイルをダウンロードします。

  2. ファイルを解凍します。 抽出した Tutorial_IoTEdge_PackageUpdate フォルダーには、sample-defender-iot-apt-manifest.json サンプル APT マニフェストとそれに対応する sample-defender-iot--importManifest.json インポート マニフェストが含まれています。

  3. Device Update インスタンスの Azure portal の [IoT Hub] ページで、左側のナビゲーションから [デバイス管理]>[更新プログラム] の順に選択します。

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

  5. [更新プログラムのインポート] ページで [ストレージ コンテナー から選択] を選択します。

  6. [ストレージ アカウント] ページで、既存のストレージ アカウントを選択するか、[ストレージ アカウント] を選択して新しいアカウントを作成します。

  7. [コンテナー] ページで、既存のコンテナーを選択するか、[コンテナー] を選択して新しいコンテナーを作成します。 コンテナーを使用して、インポート用の更新プログラム ファイルをステージングします。

    ストレージ アカウントとコンテナーを示すスクリーンショット。

    ヒント

    以前の更新プログラムから誤ってファイルをインポートしないように、更新プログラムをインポートするごとに新しいコンテナーを使用します。 新しいコンテナーを使用しない場合は、既存のコンテナーからファイルを削除します。

  8. コンテナー ページで、[アップロード] を選択し、ダウンロードした更新ファイルをドラッグ アンド ドロップするか参照して選択し、[アップロード] を選択します。 アップロードすると、ファイルがコンテナー ページに表示されます。

  9. インポートするファイルを確認して選択し、[選択] を選択します。

    アップロード済みファイルの選択を示すスクリーンショット。

  10. [更新プログラムのインポート] 画面で [更新プログラムのインポート] を選択します。

    [更新のインポート] を示すスクリーンショット。

インポート プロセスが開始され、画面が [更新プログラム] セクションに切り替わります。 インポートが成功すると、[更新プログラム] タブに表示されます。インポート プロセスの詳細については、Device Update への更新プログラムのインポートに関する記事を参照してください。

ジョブの状態を示すスクリーンショット。

デバイス グループを選択する

デバイスに適用したグループ タグを使用して、デバイス グループに更新プログラムをデプロイできます。 [更新プログラム] ページの上部にある [グループとデプロイ] タブを選択して、グループとデプロイの一覧と更新プログラムのコンプライアンス グラフを表示します。

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

[グループ名] の下にこの IoT ハブに接続されているデバイスのすべてのデバイス グループと利用可能な更新プログラムの一覧が表示され、更新プログラムを展開するためのリンクが [状態] の下に表示されます。 グループのデバイス クラスの要件を満たしていないデバイスは、対応する無効なグループに表示されます。 タグとグループの詳細については、デバイス グループの管理に関する記事を参照してください。

このチュートリアルで設定したデバイスを含むデバイス グループと、グループ内のデバイスで使用できる更新プログラムが表示されます。 場合によっては、ページを更新する必要があります。 このビューからグループに最適な利用可能な更新プログラムをデプロイするには、グループの横にある [デプロイ] を選択します。

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

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

  1. [グループの詳細] ページで [現在のデプロイ] タブを選択し、[利用可能な更新プログラム] セクションで目的の更新プログラムの横にある [デプロイ] を選択します。 グループに最適な利用可能な更新プログラムには、[最適] の表示が付いています。

    更新の選択を示すスクリーンショット。

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

    デプロイの作成を示すスクリーンショット。

    ヒント

    既定の開始日時は、現在の時刻から 24 時間後です。 デプロイを早く開始したい場合は、異なる日時を選択します。

  3. [グループの詳細] ページの [デプロイの詳細] で、[状態][アクティブ] に変わります。 [利用可能な更新プログラム] で、選択した更新プログラムに [(展開中)] のマークが付きます。

    デプロイがアクティブであることを示すスクリーンショット。

  4. [更新プログラム] ページの [グループとデプロイ] タブでコンプライアンス チャートを表示して、更新が進行中であることを確認します。 デバイスが正常に更新されると、コンプライアンス チャートとデプロイの詳細がその状態を反映するように更新されます。

    更新の成功を示すスクリーンショット。

更新プログラムのデプロイ履歴を表示する

  1. [グループの詳細] ページの上部にある [デプロイ履歴] タブを選択し、作成したデプロイの横にある [詳細] リンクを選択します。

    [デプロイの履歴] を示すスクリーンショット。

  2. [デプロイの詳細] ページで [更新] アイコンを選択して、最新の状態の詳細を表示します。

    デプロイの詳細を示すスクリーンショット。

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

このチュートリアル用に作成したリソースは、不要になったら削除できます。

  1. Azure portal で、リソースが含まれるリソース グループに移動します。
  2. グループのすべてのリソースを削除する場合は、[リソース グループの削除] を選びます。
  3. リソースの一部のみを削除する場合は、チェック ボックスを使用してリソースを選択してから、[削除] を選択します。