この記事は、OSConfig 機能をデバイスに追加して、構成を Azure IoT サービス経由でプロビジョニング、管理、監視できるようにするユーザーを対象としています。 これには、デバイス ビルダー、システム インテグレーター、ソリューション ビルダーなどが含まれます。
OSConfig エージェントは、大規模なプロビジョニングと管理のために各デバイスのローカル構成を Azure IoT に投影するコンパクトな Linux コンポーネントです。 OSConfig の動機と使用方法のコンテキストについては、「 IoT 用 OSConfig とは」を参照してください。
フリートスケールまたは単一デバイス?
シナリオの試用を開始するには、OSConfig を 1 台のデバイスにインストールします。
次の図に示すように、構成がプロビジョニングおよび管理される各デバイスには OSConfig エージェントが必要です。
通常、OSConfig エージェントは参照デバイスの OS イメージに含まれ、多くのデバイスに適用されます。
どのような種類のデバイスですか?
ハードウェア クラス
概要については、次の表を参照してください。 表の後に詳細なメモがあります。
| OSConfig をインストールしますか? | |
|---|---|
| MCU クラス ¹ | 現時点では行わない |
| Linux ² を使用した強力でない MPU/CPU | はい |
| Linux ² を使用したより強力なデバイス | はい |
| Windows IoT を実行しているデバイス | 同様の機能 組み込み CSP リファレンス |
¹ MCU クラス: コンテキストでは、Arduino デバイス、RP2040 ベースのデバイスなどが含まれます。 これらのデバイスは、通常、シナリオ固有のコードベアメタルまたは AzureRTOS や FreeRTOS などのマイクロ OS を使用して実行します。
² Linux を使用した より強力でない MPU/CPU クラス: エージェントはコンパクトで効率的に設計されており、Linux を実行できる小型デバイスまで使用できます。
² Linux を使用した より強力なエッジ コンピューティング: 効率的なデバイス側コンポーネントとして、OSConfig エージェントは、NVidia Jetson キットなどのより強力なエッジ コンピューティング デバイスに完全に依存します。
Linux "IoT デバイス" と Linux "Edge デバイス"
Linux 用 Azure IoT エコシステムでは、IoT デバイスと Edge デバイスという用語を使用して、デバイスがインストールされているかどうかを区別IoT Edge場合があります。 また、デバイス クラスとの相関関係も緩くなります (大規模なデバイスにはIoT Edgeがインストールされる傾向があります)。
OSConfig は、どちらのコンテキストでも機能します。 IoT Edgeと並行して実行できますが、IoT Edgeは必要ありません。
デバイス シークレットについて、また、複数のアプリ/エージェント/モジュールはどうなりますか?
AZURE IoT Identity Service (AIS) と共に OSConfig を使用することをお勧めします。
AIS は、シークレットと認証を処理するための Microsoft のオンデバイス ブローカーです。 AIS を使用すると、複数のアプリ、エージェント、または Edge モジュールが 1 つのデバイス ID を共有するためにシームレスになります。 次の手順では、AIS と OSConfig を一緒に使用する方法を示します。
AIS はスタンドアロンで使用でき、IoT Edge 1.2 以降にも含まれています。 インストールする場合は、次の点を考慮してください。
| AIS をインストールしますか? | |
|---|---|
| デバイスにIoT Edgeがありません ("IoT デバイス" とも呼ばれます) | はい |
| デバイスが 1.2 以上IoT Edge | はい¹ |
| デバイスのIoT Edgeが 1.1 以下である | いいえ² |
¹ IoT Edge 1.2 以降には、AIS コンポーネントが含まれます。 手順をわかりやすくするために、以下の手順には常に AIS のインストールが含まれます。 この方法により、パッケージ マネージャーは、そのロジックを外部で再作成するのではなく、この手順が操作不要かどうかを検出できます。
² IoT Edge 1.1 以下のデバイスには AIS をインストールしないでください。 新しいバージョンのIoT Edgeに移行することを検討してください。 IoT Edgeアップグレードする準備ができていないが、OSConfig のシナリオを調べる場合は、別のデバイスまたは VM で今のところシナリオを試すことを検討してください。
ジョブ 1。 デバイスにコンポーネントをインストールする
ニーズに合わせて次の 3 つのオプションがあります。
- A. パッケージをインストールする
- B. ソースからビルドする
- C. 組み込みの機能でデバイスを使用する
手順については、以下の好みのエクスペリエンスを選択してください。
既製のインストール パッケージは、arm64 (別名 aarch64)、amd64 (別名x86_64) で使用できます。
- Debian 10
- Debian 11
- Ubuntu Server 18.04
- Ubuntu Server 20.04
ステップ 1.1. デバイスを packages.microsoft.com に接続する
次のコマンド例を使用して、OS パッケージ マネージャーを packages.microsoft.com の安定チャネルに接続できます。
#!/bin/bash
## For Ubuntu and on Debian 10+
## Register packages.microsoft.com key and prod channel
sudo wget https://packages.microsoft.com/keys/microsoft.asc -O /etc/apt/trusted.gpg.d/packages-microsoft-com_key.asc
os_name=$(grep ^ID= /etc/os-release | tr -d "ID=")
os_version=$(grep ^VERSION_ID /etc/os-release | tr -d "VERSION_ID=")
sudo wget https://packages.microsoft.com/config/"$os_name"/"$os_version"/prod.list -O /etc/apt/sources.list.d/packages-microsoft-com_prod.list
sudo apt update
ヒント
上記の例では、パッケージ マネージャー prod を packages.microsoft.com のチャネルに接続します。これは、ほとんどのデバイスや状況に適しています。 プレビュー ビルドの詳細については、「OSConfig プレビューまたは "insider" ビルドについて」を参照してください。
ステップ 1.2. AIS パッケージをインストールする
注意事項
前述のように、IoT Edge 1.1 以下のデバイスに AIS をインストールしないでください。 AIS は、IoT Edgeのないデバイス、または IoT Edge 1.2 以上のデバイス用です。
sudo apt-get install -y aziot-identity-service
ステップ 1.3. OSConfig パッケージをインストールする
sudo apt-get install -y osconfig
現時点でのみコンポーネントをインストールする場合 (基本イメージの準備など)、Azure に接続していない場合は、ここで停止できます。 次の手順は、後で 、おそらく顧客によって実行されます。
ジョブ 2。 Azure に接続する
OSConfig エージェントと AIS がデバイスに存在するようになったので、次の手順は、Azure に接続できるように ID を使用してデバイスを構成することです。
ヒント
一部のデバイスには、ユーザーに代わってこれを行うメカニズムが用意されている場合があります。 たとえば、Azure Percept デバイスには、デバイスを接続するためのセットアップ エクスペリエンスが含まれています。
ステップ 2.1. デバイスの資格情報をデバイス上の AIS に設定する
AIS では、複数のデプロイ シナリオと認証方法がサポートされています。
次の単純な例では、対称キーを持つ接続文字列を使用します。 運用環境のシナリオでは、「 Azure IoT Identity Service の構成」で説明されているより強力な認証オプションから選択します。
クイック例: 対称キーを使用して接続する
Azure Portal で次の操作を行います。
- IoT Hubデバイスの一覧に移動します
- 必要に応じてデバイス ID を作成する
- デバイスのプロパティを参照し、接続文字列をコピーします
デバイスで次の手順を実行します。
- 次のコマンドを実行して、資格情報を AIS に設定し、接続文字列プレースホルダーを独自のプレースホルダーに置き換えます。
sudo aziotctl config mp –-connection-string "<your connection string from IoT Hub>" sudo aziotctl config apply
ステップ 2.2. Azure への正常な接続を確認する
デバイスで次のコマンドを使用して、AIS と OSConfig がIoT Hubに接続していることを確認できます。
sudo aziotctl check
sudo systemctl status osconfig | grep Active
コマンドの出力は、すべてのテストが aziotctl check 合格したことを示す必要があります。
の出力には を systemctl status osconfig 含める Active: active必要があります。 場合によっては、代わりに表示 Active: activating (auto-restart) されることがあります。つまり、systemd はタイマーでサービスの再起動を待機しています。 待機せずにこれをすぐに超える場合は、 を実行 sudo systemctl restart osconfigしてから、status コマンドをもう一度試してください。
これで終了です。 OSConfig クライアントがデバイスで実行されるようになりました。
オプションのエージェント設定
多くのユーザーは、このセクションをスキップして、単に既定の動作を使用できます。 プロキシ サーバー、送信ファイアウォールの制限、階層化されたネットワークなどの環境またはガバナンスの制約がある場合は、次を参照してください。
IoT Hub プロトコルの選択
ヒント
プロトコルの選択は、バージョン v1.0.2.2022040405 の prod/stable チャネルに追加されました。 OSConfig の最新の prod/stable バージョンを使用していることを確認します。
IoT Hubと通信する場合、OSConfig エージェントはプレーンなメッセージ キュー テレメトリ トランスポート (MQTT) を使用するか、MQTT over WebSocket (MQTT_WS) を使用できます。
多くのユーザーはプロトコルを指定する必要がなく、単に既定の動作を使用できます。 次のいずれかの考慮事項に基づいてプロトコルを指定する必要がある場合は、/etc/osconfig/osconfig.json に値を設定Protocolします。
| MQTT | MQTT_WS | |
|---|---|---|
| TCP ポート ¹ | 8883 | 443 |
| プロキシ サーバー ² | いいえ | はい |
| IoT Edge ゲートウェイ (親/子) ² |
はい | いいえ |
| プロトコル識別子 osconfig.json で設定する |
1 | 2 |
¹ デバイス上の OSConfig エージェントが送信に接続するときに使用される TCP ポートを参照IoT Hub
² OSConfig が HTTP プロキシ サーバーを明示的に使用できるかどうかを示します (環境変数を使用https_proxy)
² 子デバイスで実行されている OSConfig が親デバイス経由でIoT Hubに接続する、IoT Edge Transparent Gateway シナリオを指します
HTTP プロキシ サーバー経由の接続
お使いの環境で、OSConfig が HTTP プロキシ サーバー経由でIoT Hubに接続する必要がある場合は、次を参照してください。
ヒント
プロキシ サーバーのサポートが、バージョン v1.0.2.2022040405 の prod/stable チャネルに追加されました。 Ensure you are using the latest prod/stable version of OSConfig.
プロトコルの選択IoT Hub説明したように、HTTP プロキシ サーバーではMQTT_WSのみを使用できます。 MQTT_WSアクティブ化するには、/etc/osconfig/osconfig.json の値が に設定されていることを確認
Protocolします2。https_proxyまたはHTTPS_PROXY環境変数が OSConfig が実行されるコンテキストで設定されていることを確認します。通常、sysadmins またはイメージ ビルダーは、プロキシ サーバーを使用する必要があるサービス (OSConfig を含む) の systemd ユニット ファイルを編集することで、これを伝えます。
たとえば、次のような行を追加します。
Environment="https_proxy=http://myproxy.example.com:3128"
[Service]を /etc/systemd/system/osconfig.service の部分に格納します。
ファイルを編集した後は、必ず とsudo systemctl restart osconfigを実行sudo systemctl daemon-reloadしてください。
次の手順
OSConfig を実行し、Azure IoT に接続したデバイスが用意されたので、管理シナリオを試すことができます。
OSConfig のシナリオと機能の概要については、次を参照してください。
具体的な実用的な例については、次を参照してください。