安装适用于 Linux 的 OSConfig 代理的方式和位置

本文适用于想要将 OSConfig 功能添加到其设备,以便可以通过 Azure IoT 服务预配、管理和监视其配置的人员。 这可以包括设备生成器、系统集成商、解决方案构建者等。

OSConfig 代理是一个精简的 Linux 组件,它将每个设备的本地配置投影到 Azure IoT 中,以便进行大规模预配和管理。 有关 OSConfig 动机和使用情况的上下文,请参阅: 什么是适用于 IoT 的 OSConfig

机队规模还是单个设备?

  • 若要开始试用方案,可以在单个设备上安装 OSConfig。

  • 大规模地,将预配和管理其配置的每个设备都必须具有 OSConfig 代理,如下图所示。

    显示多个设备连接到IoT 中心的关系图,每个设备都有一个 OSConfig 孪生体。

    通常,OSConfig 代理将包含在引用设备 OS 映像中,然后应用于许多设备。

哪些类型的设备?

硬件类

有关摘要,请参阅下表。 详细说明在表后面。

安装 OSConfig?
MCU 类 ¹ 暂时不
使用 Linux ² 的强大 MPU/CPU
具有 Linux 2 的更强大的设备
运行 Windows IoT 的设备 类似功能
内置 CSP 参考

¹ MCU 类:对于上下文,这些类包括 Arduino 设备、基于 RP2040 的设备等。 这些设备通常以裸机或微 OS(如 AzureRTOS 或 FreeRTOS)运行特定于方案的代码。

² 使用 Linux 的 MPU/CPU 类功能较低:代理设计紧凑高效,可用于能够运行 Linux 的较小设备。

进一 步强大的边缘计算与 Linux:作为一个高效的设备端组件,OSConfig 代理完全位于更强大的边缘计算设备(如 NVidia Jetson 工具包)上。

Linux“IoT 设备”与 Linux“Edge 设备”

在适用于 Linux 的 Azure IoT 生态系统中,术语“IoT 设备边缘设备”有时用于区分设备是否已安装IoT Edge。 (较大的设备往往) 安装IoT Edge,与设备类也有松散的关联。

OSConfig 可在任一上下文中运行。 它可以与IoT Edge并行运行,但不需要IoT Edge。

设备机密如何,多个应用/代理/模块又如何?

建议将 OSConfig 与 Azure IoT 标识服务 (AIS) 结合使用。

AIS 是 Microsoft 的设备上代理,用于处理机密和身份验证。 AIS 使多个应用、代理和/或 Edge 模块可以无缝共享单个设备标识。 以下步骤演示如何同时使用 AIS 和 OSConfig。

AIS 是独立的,也包含在 IoT Edge 1.2 及更高版本中。 安装时,请考虑以下事项。

安装 AIS?
设备没有IoT Edge (又称“IoT 设备”)
设备具有 IoT Edge 1.2 或更高版本 是¹
设备具有 IoT Edge 1.1 或更低版本 否²

¹ IoT Edge 1.2 及更高版本包括 AIS 组件。 为简单起见,以下步骤始终包括 AIS 安装。 此方法允许包管理器检测此步骤是否为无操作,而不是在外部重新创建该逻辑。

² 请勿在IoT Edge 1.1 或更低版本的设备上安装 AIS。 请考虑迁移到更高版本的 IoT Edge。 如果尚未准备好升级IoT Edge但仍想要探索 OSConfig 方案,请考虑暂时在另一台设备或 VM 上尝试这些方案。

作业 1. 在设备上安装组件

有三个选项可满足你的需求:

  • 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 预览版或“预览体验成员”版本

步骤 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。

提示

某些设备可能具有代表你执行此操作的机制。 例如,Azure Percept 设备包括用于连接设备的设置体验。

步骤 2.1. 在设备上将设备凭据设置为 AIS

AIS 支持多种部署方案和身份验证方法。

以下简单示例使用具有对称密钥的连接字符串。 对于生产方案,请从 配置 Azure IoT 标识服务中所述的更强身份验证选项中进行选择。

快速示例:使用对称密钥进行连接

在 Azure 门户中:

  1. 导航到IoT 中心设备列表
  2. 根据需要创建设备标识
  3. 浏览到设备的属性,并复制连接字符串

在设备上:

  1. 运行以下命令,将凭据设置为 AIS,并将连接字符串占位符替换为你自己的。
sudo aziotctl config mp –-connection-string "<your connection string from IoT Hub>"
sudo aziotctl config apply

步骤 2.2. 验证是否成功连接到 Azure

可以使用设备上的以下命令验证 AIS 和 OSConfig 是否连接到IoT 中心:

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 中心协议选择

提示

协议选择已添加到版本 v1.0.2.2022040405 中的 prod/stable 通道。 确保使用的是 OSConfig 的最新生产/稳定版本。

与IoT 中心通信时,OSConfig 代理可以使用纯消息队列遥测传输 (MQTT) ,也可以使用基于 WebSocket (MQTT_WS) 的 MQTT

许多人不需要指定协议,只需使用默认行为即可。 如果需要根据以下注意事项之一指定协议,请在 /etc/osconfig/osconfig.json 中设置Protocol值。

MQTT MQTT_WS
TCP 端口 ¹ 8883 443
代理服务器 ²
IoT Edge 网关
(父/子) 2
协议标识符
在 osconfig.json 中设置
1 2

¹ 指设备上的 OSConfig 代理将出站连接到 IoT 中心

² 指 OSConfig 是否可以通过https_proxy环境变量 (显式使用 HTTP 代理服务器)

2 指IoT Edge透明网关方案,在该方案中,在子设备上运行的 OSConfig 通过父设备连接到IoT 中心

通过 HTTP 代理服务器进行连接

如果环境要求 OSConfig 通过 HTTP 代理服务器连接到IoT 中心,请参阅以下内容:

提示

已在版本 v1.0.2.2022040405 中向 prod/stable 通道添加了代理服务器支持。 Ensure you are using the latest prod/stable version of OSConfig.

  1. IoT 中心协议选择中所述,只能将MQTT_WS与 HTTP 代理服务器一起使用。 若要激活MQTT_WS,请确保将 /etc/osconfig/osconfig.json 中的值设置为 2Protocol

  2. 确保在 https_proxy 运行 OSConfig 的上下文中设置 或 HTTPS_PROXY 环境变量。

    通常,sysadmins 或映像生成器通过编辑任何服务的 systemd 单元文件来传达这一点, (包括应使用代理服务器的 OSConfig) 。

    例如,可以添加类似于
    Environment="https_proxy=http://myproxy.example.com:3128"
    [Service]/etc/systemd/system/osconfig.service 部分。
    请务必在编辑文件后运行 sudo systemctl daemon-reloadsudo systemctl restart osconfig

后续步骤

现在,你已有运行 OSConfig 并连接到 Azure IoT 的设备,可以尝试管理方案。

有关 OSConfig 方案和功能的概述,请参阅:

有关具体的实际示例,请参阅: