重要
バージョン 1.0.3 (2022 年 6 月 28 日公開) には、既存のユーザーに影響を与える可能性のあるメンバー名の破壊的変更が含まれています。 詳細については、「バージョン 1.0.3 でメンバー名が PascalCase から camelCase に移行する」を参照してください。
audience とスコープ
この記事は、Azure IoT を使用して デバイスをプロビジョニングまたは管理 するユーザーをサポートするように設計されています。 それでも問題が解決しない場合は、 OSConfig の対象ユーザーに関するドキュメントを参照することを検討してください。
この記事では、 DeviceInformation モジュールと TPM モジュールを使用して、 オペレーティング システム、 バージョン、 TPM プレゼンス、 メモリなどのデバイス情報を取得する方法について説明します。
ユース ケースの例
これらの例は、独自の環境に適応するための出発点として役立ちます。
ライブ システムで例を試す前提条件
この記事を参考に使用している場合 (たとえば、プロパティ名をコピーする場合など)、前提条件はありません。
ライブ システムで例を試す (推奨) 場合は、次のようにします。
IoT Hubを持つ Azure アカウントが必要です
この記事では、IoT Hubおよび関連ツールについて理解していることを前提としています。 たとえば、IoT Hubs の作成とデバイスのアタッチに慣れているとします。 OSConfig を最初からインストールして使用するためのより規範的なステップ バイ ステップの概要が必要な場合は、「 クイック スタート: Azure CLI を使用して単一の仮想 IoT デバイスを管理 する」を参照してください。
OSConfig エージェントがインストールされ、Azure IoT に接続されている Linux デバイスが少なくとも 1 つ必要です。
詳細については、「 Linux 用 OSConfig エージェントのインストール方法とインストール場所」を参照してください。
Azure Portal または Azure CLI を使用して、IoT Hubを介してデバイスを操作します
さらに手順を実行するには、次の操作を行います。
- Azure Portal にサインインしていて、IoT Hubの [概要] ページにアクセスできることを確認
例 A. すべてのデバイス情報プロパティを取得する
この例では、これら 2 つの名前空間で使用可能なすべてのデバイス情報を取得するだけです。 この情報は、クラウド ソリューションまたは診断シナリオのインベントリ シナリオの一部として使用することが想定されます。
ステップ バイ ステップの手順は、画面キャプチャに従います
- 任意のデバイスの OSConfig ツインに移動します
- Azure portal のIoT Hubのページから、[デバイスのデバイス管理 > ] (デバイスがインストールされている場合はIoT Edge>デバイス管理) に移動IoT Edge
- デバイス ID の一覧でデバイス名をクリックします
- [モジュール ID] で、osconfig モジュール ID をクリックします
- [モジュール ID ツイン] をクリックします
- スクロールして の下の セクションと
Tpm
セクションを表示し、 などosVersion
totalMemory
cpuType
tpmVersion
、使用可能な情報をメモします。DeviceInfo
properties.reported
例 B. デバイス間で OS と CPU 情報の表形式レポートを生成する
この例では、Bash/Cloud Shellのみ、大規模な例が設定されます。 これは、IoT Hub クエリ関数と Azure CLI の機能の--output table
使用を示しています。 これらのデータ ポイントを独自のクラウド ワークフローに統合し、必要に応じてソリューションオペレーターにテーブルを表示することが期待されます。
適用不可。 [前提条件] に移動して、このドキュメントのライブ システムの例を試し、[Bash/Cloud Shell] を選択します。
例 C. TPM の有無に関係なくデバイスをカウントする
この例では、OSConfig によって公開される TPM 情報に適用される Azure IoT クエリの GROUP BY 演算子を使用します。
適用できません。大規模な Azure Portal に関するページを参照してください。
参照情報
オブジェクト モデルの説明
このセクションでは、ツインのプロパティと対応する動作について説明します。
ヒント
プレーンな望ましい/報告されたツインの視点が DTDL 拡張視点と異なる場合、前者は最初にかっこで囲まれた後に後者が指定されます。
DeviceInfo
パス:
properties.reported.DeviceInfo
(DeviceInfo
コンポーネント)説明: OS 名、OS バージョン、CPU の種類などのデバイス全体の情報。
メンバー
名前 Type メモ osName string Ubuntu、Debian などの OS 名。 osVersion string OS バージョン ("20.04" など) cpuType string "aarch64"、"x86_64" などの高レベルの ISA 識別子。 cpuVendorId string "ARM"、"GenuineIntel" などのベンダー識別子。 cpuModel string プロセッサ識別子 ("Cortex-A72" など) totalMemory INT OS で見られるように、インストールされた RAM freeMemory INT 使用可能な RAM (サービスの開始時刻)¹(OS で確認) kernelName string カーネル名 ("Linux" など) kernelVersion string "#75-Ubuntu SMP PREEMPT Fri Jun 3 14:24:57 UTC 2022" のような追加のカーネル ビルド情報 kernelRelease string カーネル ビルド バージョン識別子 ("5.4.0-1065-raspi" など) productVendor string "Contoso Systems, Inc" のようなデバイスの製品ベンダー コンテキストを参照します。多くの場合空白 productName string "Raspberry Pi 4 Model B Rev 1.4" のようなデバイス製品名 productVersion string デバイス製品のバージョン。多くの場合空白 systemCapabilities string lshw -c system
からsystemConfiguration string lshw -c system
からosConfigVersion string デバイスを表す OSConfig エージェントのバージョン番号 ¹ このプロパティは
freeMemory
、動的監視ではなく、一般的なシステム特性評価用に設計されています。 そのため、サービスの開始時にのみ値が更新されるため、この値を継続的に更新する CPU とネットワークのコストを回避できます。 空きメモリの継続的な監視については、「 Azure Monitor」を参照してください。ペイロードの例 (ツインの
properties.reported
セクションに示すように)"DeviceInfo": { "__t": "c", "osName": "Ubuntu", "osVersion": "20.04.4", "cpuType": "aarch64", "cpuVendorId": "ARM", "cpuModel": "Cortex-A72", "totalMemory": 7998708, "freeMemory": 7168776, "kernelName": "Linux", "kernelVersion": "#75-Ubuntu SMP PREEMPT Fri Jun 3 14:24:57 UTC 2022", "kernelRelease": "5.4.0-1065-raspi", "productVendor": "", "productName": "Raspberry Pi 4 Model B Rev 1.4", "productVersion": "", "systemCapabilities": "smp cp15_barrier setend swp tagged_addr_disabled", "systemConfiguration": "", "osConfigVersion": "1.0.3.2022062801" }
Tpm
パス:
properties.reported.Tpm
(Tpm
コンポーネント)説明: OS に公開されている TPM の存在と状態
メンバー
名前 Type メモ tpmStatus ints の列挙型 0 (不明)、1 (検出)、2 (検出されない) tpmVersion string TPM インターフェイスのバージョン (例: "2.0") tpmManufacturer string 識別子 ("IFX" など) Example payload (as seen in twin's
properties.reported
section)"Tpm": { "__t": "c", "tpmStatus": 1, "tpmVersion": "2.0", "tpmManufacturer": "IFX" }
次の手順
OSConfig のシナリオと機能の概要については、次を参照してください。
具体的な実際の例については、次を参照してください。