チュートリアル: Ubuntu Server 22.04 x64 上のパッケージ エージェントを使用した Device Update for Azure IoT Hub
Device Update for Azure IoT Hub では、イメージベース、パッケージベース、スクリプトベースの更新がサポートされています。
パッケージベースの更新は、デバイス上の特定のコンポーネントまたはアプリケーションのみを変更するターゲット指定の更新となります。 これにより、帯域幅の消費量が少なくなるほか、更新のダウンロードとインストールにかかる時間が短縮されます。 また、通常、パッケージベースの更新プログラムを使用した場合も、更新プログラムを適用するときのデバイスのダウンタイムを短縮し、イメージ作成のオーバーヘッドを回避できます。 また、APT マニフェスト ファイルで指定されたパッケージ (およびその依存関係) を指定されたリポジトリからダウンロードしてインストールするために必要な情報を、デバイス更新エージェントに提供する APT マニフェストが使用されています。
このチュートリアルでは、Device Update パッケージ エージェントを使用して、Ubuntu Server 22.04 x64 の Azure IoT Edge を更新する手順について説明します。 このチュートリアルでは Microsoft Defender for IoT のインストールを扱いますが、同様の手順を使用すれば、他のパッケージ、たとえば IoT Edge 自体やそれが使用するコンテナー エンジンを更新することもできます。
このチュートリアルで取り上げるツールと概念は、使用を検討している OS プラットフォーム構成が異なる場合にも当てはまります。 ここでは、エンド ツー エンドの更新プロセスの概要について説明します。 次に、OS プラットフォームを更新するための適切な形式を選択して、詳細を確認します。
このチュートリアルでは、次の方法について説明します。
- デバイス更新エージェントとその依存関係をダウンロードしてインストールする
- デバイスにタグを追加する
- 更新プログラムをインポートする
- パッケージの更新をデプロイする
- 更新プログラムのデプロイを監視する
前提条件
Device Update アカウントとインスタンスをまだ作成していない場合は作成します。 IoT ハブを構成します。
IoT Edge デバイスの接続文字列が必要です。
前のテストでシミュレーター エージェントのチュートリアルを使用した場合は、次のコマンドを実行して APT ハンドラーを呼び出し、このチュートリアルの無線でのパッケージの更新をデプロイできます。
sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/apt:1'
デバイスを準備する
自動化された [Azure へのデプロイ] ボタンを使用する
Ubuntu 22.04 LTS VM (仮想マシン) を短時間で設定しやすいように、このチュートリアルでは便宜上 cloud-init ベースの Azure Resource Manager テンプレートを使用します。 Azure IoT Edge ランタイムと Device Update パッケージ エージェントが両方インストールされます。 次に、指定した IoT Edge デバイスのデバイス接続文字列 (前提条件) を使用して、プロビジョニング情報を含むデバイスが自動的に構成されます。 また、Resource Manager テンプレートを使用すれば、セットアップを完了するために SSH セッションを開始する必要はありません。
開始するには、ボタンを選択します。
使用可能なテキストボックスに入力します。
- サブスクリプション:仮想マシンをデプロイするためのアクティブな Azure サブスクリプション。
- [リソース グループ]: 仮想マシンとそれに関連付けられたリソースを格納する、既存の、または新規に作成されたリソース グループ。
- [リージョン]: 仮想マシンをデプロイする 地理的リージョン。 この値の既定値は、選択したリソース グループの場所です。
- [DNS ラベル プレフィックス]: 仮想マシンのホスト名のプレフィックスとして使用される、ユーザーが選択する必須の値。
- [管理ユーザー名]: ユーザー名。デプロイ時にルート権限が与えられます。
- [デバイス接続文字列]: 目的の IoT hub 内に作成された、デバイス用のデバイス接続文字列。
- [VM サイズ]: デプロイする仮想マシンのサイズ。
- [Ubuntu OS バージョン] :ベース仮想マシンにインストールする Ubuntu OS のバージョン。 既定値は変更せず、そのままにしておいてください。あらかじめ Ubuntu 22.04-LTS に設定されます。
- [認証の種類]: sshPublicKey または パスワード を選択します。
- [管理パスワードまたはキー]: 認証の種類の選択に応じて、SSH 公開キーの値、またはパスワードの値。
すべてのボックスに入力した後、ページの下部にあるチェックボックスをオンにして、使用条件に同意します。 [購入] を選択してデプロイを開始します。
デプロイが正常に完了していることを確認します。 デプロイの完了後、インストール後の処理と構成で IoT Edge とデバイス パッケージ更新エージェントがインストールされるまで数分待ちます。
仮想マシン リソースが、選択したリソース グループにデプロイされている必要があります。
vm-0000000000000
という形式のコンピューター名をメモします。 また、関連付けられている DNS 名は<dnsLabelPrefix>
.<location>
.cloudapp.azure.com という形式であることにも注意してください。DNS 名は、Azure portal に新しくデプロイされた仮想マシンの [概要] セクションから取得できます。
ヒント
設定後にこの VM に SSH 接続する場合は、次のコマンドと関連付けられている DNS 名を使用します。
ssh <adminUsername>@<DNS_Name>
デバイス更新エージェントを VM にインストールします。
sudo apt-get install deviceupdate-agent
構成の詳細を開きます (以下のコマンドを使用してここで構成ファイルを設定する方法を参照してください。 connectionType を 'AIS' に、connectionData を空の文字列として設定します。 "ここに値を配置" タグを持つすべての値を設定する必要があることに注意してください。 「デバイス更新エージェントの構成」を参照してください。
sudo nano /etc/adu/du-config.json
Device Update エージェントを再起動します。
sudo systemctl restart deviceupdate-agent
Device Update for Azure IoT Hub ソフトウェア パッケージには、次のライセンス条項が適用されます。
パッケージを使用する前にライセンス条項をお読みください。 インストールし、パッケージを使用すると、これらの条項に同意したものと見なされます。 ライセンス条項に同意しない場合は、そのパッケージを使用しないでください。
デバイスにタグを追加する
Azure portal にサインインし、IoT ハブに移動します。
左側のウィンドウの [デバイス] で、対象の IoT Edge デバイスを見つけて、デバイス ツインまたはモジュール ツインに移動します。
Device Update エージェント モジュールの [モジュール ツイン] で、既存の Device Update タグ値を null 値に設定して削除します。 Device Update エージェントでデバイス ID を使用している場合は、[デバイス ツイン] でそれらの変更を行います。
次に示すように、Device Update の新しいタグ値を追加します。
"tags": { "ADUGroup": "<CustomTagValue>" },
''このスクリーンショットには、タグをツインに追加する必要があるセクションが示されています。''
更新プログラムをインポートする
GitHub の「デバイス更新プログラムのリリース」に移動し、[アセット] ドロップダウン リストをクリックします。
Tutorial_IoTEdge_PackageUpdate.zip
を選択してダウンロードします。 フォルダーの内容を抽出して、サンプル APT マニフェスト (sample-defender-iot-apt-manifest.json) とそれに対応するインポート マニフェスト (sample-defender-iot--importManifest.json) を検出します。Azure portal にサインインし、Device Update がある IoT Hub に移動します。 左側のウィンドウの [デバイスの自動管理]の下で、[更新プログラム] を選択します。
[更新] タブを選択します。
[+ 新しい更新プログラムのインポート] を選択します。
[+ ストレージ コンテナーから選択] を選択します。 [+ ストレージ アカウント] を使用して、既存のストレージ アカウントを選択するか、新しいストレージ アカウントを作成します。 次に、既存のコンテナーを選択するか、[+ コンテナー] を使用して新しいコンテナーを作成します。 このコンテナーは、インポート用に更新ファイルをステージするために使用されます。
注意
以前の更新プログラムから誤ってファイルをインポートしないように、更新プログラムをインポートするごとに新しいコンテナーを使用することをお勧めします。 新しいコンテナーを使用しない場合は、この手順を実行する前に、既存のコンテナーからファイルを削除してください。
コンテナーで [アップロード] を選択し、手順 1 でダウンロードしたファイルに移動します。 すべての更新ファイルを選択した後、[アップロード] を選択します。 続いて [選択] ボタンを選択して、[更新プログラムのインポート] ページに戻ります。
このスクリーンショットは、インポートの手順を示しています。 ファイル名は、例で使用されているものと一致しない場合があります。
[更新プログラムのインポート] ページで、インポートするファイルを確認します。 次に、[更新プログラムのインポート] を選択してインポート プロセスを開始します。
インポート プロセスが開始され、画面が [インポートの履歴] セクションに切り替わります。 [状態] 列にインポートが正常に完了したことが表示されたら、[使用可能な更新プログラム] 見出しを選択します。 インポートされた更新プログラムが一覧に表示されるはずです。
インポート プロセスの詳細については、Device Update への更新プログラムのインポートに関する記事を参照してください。
デバイス グループを表示する
Device Update ではグループを使用してデバイスを整理します。 割り当てられたタグと互換性プロパティに基づいて、Device Update で自動的にデバイスがグループに並べ替えられます。 各デバイスは 1 つのグループにのみ属しますが、グループには複数のサブグループを含めることができ、さまざまなデバイス クラスを並べ替えることができます。
ページの上部にある [グループとデプロイ] タブに移動します。
グループの一覧と更新プログラムのコンプライアンス チャートを表示します。 更新プログラムのコンプライアンス チャートには、さまざまなコンプライアンス対応状態 (最新の更新状態、利用可能な新しい更新プログラムがある、更新プログラムのインストールが進行中) にあるデバイスの数が表示されます。 更新プログラムのコンプライアンスの詳細についてはこちらを参照してください。
このチュートリアルで設定したシミュレートされたデバイスを含むデバイス グループと、新しいグループ内のデバイスで使用できる更新プログラムが表示されます。 グループのデバイス クラスの要件を満たしていないデバイスがある場合は、対応する無効なグループに表示されます。 このビューから新しいユーザー定義グループに最適な利用可能な更新プログラムをデプロイするには、グループの横にある [デプロイ] を選択します。
タグとグループの詳細については、デバイス グループの管理に関する記事を参照してください。
更新プログラムをデプロイする
グループが作成された後、デバイス グループで利用可能な新しい更新プログラムが表示され、[最適な更新プログラム] の下にその更新プログラムへのリンクが表示されます。 場合によっては、一度最新の情報に更新する必要があります。
コンプライアンスの詳細については、「デバイス更新のコンプライアンス」を参照してください。
グループ名を選択してターゲット グループを選択します。 [グループの基本] の下にグループの詳細が表示されます。
デプロイを開始するには、[現在のデプロイ] タブに移動します。[使用できる更新プログラム] セクションで、目的の更新プログラムの横にある [デプロイ] リンクをクリックします。 特定のグループに最適な使用可能な更新プログラムには、最適 の強調表示が付けられます。
デプロイを直ちに開始するか、後で開始するようにスケジュールします。 [作成] を選択します。
ヒント
既定の開始日時は、現在の時刻から 24 時間後です。 もっと早くデプロイしたい場合は、異なる日時を選択してください。
デプロイの詳細 で、状態 が アクティブ に変わります。 デプロイされた更新プログラムには (デプロイ中) のマークが付きます。
コンプライアンス チャートを表示して、更新が進行中であることを確認します。
デバイスが正常に更新されると、コンプライアンス チャートとデプロイの詳細が、同じ内容を反映するように更新されていることがわかります。
更新プログラムのデプロイを監視する
これで、Ubuntu Server 22.04 x64 デバイス上で Device Update for IoT Hub を使用して、エンド ツー エンドのパッケージ更新が正常に完了しました。
リソースをクリーンアップする
不要になったら、デバイス更新アカウント、インスタンス、IoT ハブクリーンアップします。 [Azure へのデプロイ] ボタンを介して VM を作成した場合は、IoT Edge デバイスもクリーンアップします。 リソースをクリーンアップするには、個々のリソースに移動して [削除] を選択します。 デバイス更新アカウントをクリーンアップする前に、デバイス更新インスタンスをクリーンアップします。