安装适用于 Linux 的 OSConfig 代理的方式和位置
本文适用于想要将 OSConfig 功能添加到其设备,以便可以通过 Azure IoT 服务预配、管理和监视其配置的人员。 这可以包括设备生成器、系统集成商、解决方案构建者等。
OSConfig 代理是一个精简的 Linux 组件,它将每个设备的本地配置投影到 Azure IoT 中,以便进行大规模预配和管理。 有关 OSConfig 动机和使用情况的上下文,请参阅: 什么是适用于 IoT 的 OSConfig。
若要开始试用方案,可以在单个设备上安装 OSConfig。
大规模地,将预配和管理其配置的每个设备都必须具有 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 的 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 上尝试这些方案。
有三个选项可满足你的需求:
- A. 安装包
- B. 从源构建
- C. 使用具有内置功能的设备
有关说明,请选择以下首选体验:
现成的安装包可用于 arm64 (又名 aarch64) 、amd64 (又名 x86_64) :
- Debian 10
- Debian 11
- Ubuntu Server 18.04
- Ubuntu Server 20.04
可以使用以下示例命令将 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 预览版或“预览体验成员”版本
注意
如上所述,请勿在IoT Edge 1.1 或更低版本的设备上安装 AIS。 AIS 适用于没有IoT Edge的设备,或具有 IoT Edge 1.2 或更高版本的设备。
sudo apt-get install -y aziot-identity-service
sudo apt-get install -y osconfig
如果此时仅安装组件 (例如准备基础映像) 不连接到 Azure,可以在此处停止操作。 以下步骤稍后可能由你的客户执行。
现在设备上已存在 OSConfig 代理和 AIS,下一步是使用标识配置设备,以便它可以连接到 Azure。
提示
某些设备可能具有代表你执行此操作的机制。 例如,Azure Percept 设备包括用于连接设备的设置体验。
AIS 支持多种部署方案和身份验证方法。
以下简单示例使用具有对称密钥的连接字符串。 对于生产方案,请从 配置 Azure IoT 标识服务中所述的更强身份验证选项中进行选择。
快速示例:使用对称密钥进行连接
在 Azure 门户中:
- 导航到IoT 中心设备列表
- 根据需要创建设备标识
- 浏览到设备的属性,并复制连接字符串
在设备上:
- 运行以下命令,将凭据设置为 AIS,并将连接字符串占位符替换为你自己的。
sudo aziotctl config mp –-connection-string "<your connection string from IoT Hub>" sudo aziotctl config apply
可以使用设备上的以下命令验证 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 客户端现在在设备上运行。
许多人可以跳过此部分,只需使用默认行为。 如果有环境或治理约束,例如代理服务器、出站防火墙限制或分层网络,请参阅以下内容:
提示
协议选择已添加到版本 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 中心
如果环境要求 OSConfig 通过 HTTP 代理服务器连接到IoT 中心,请参阅以下内容:
提示
已在版本 v1.0.2.2022040405 中向 prod/stable 通道添加了代理服务器支持。 Ensure you are using the latest prod/stable version of OSConfig.
如IoT 中心协议选择中所述,只能将MQTT_WS与 HTTP 代理服务器一起使用。 若要激活MQTT_WS,请确保将 /etc/osconfig/osconfig.json 中的值设置为
2
。Protocol
确保在
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-reload
和sudo systemctl restart osconfig
。
现在,你已有运行 OSConfig 并连接到 Azure IoT 的设备,可以尝试管理方案。
有关 OSConfig 方案和功能的概述,请参阅:
有关具体的实际示例,请参阅: