你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Device Update for Azure IoT Hub 完成代理更新
查看将代理更新与 Device Update for Azure IoT Hub 配合使用(如果尚未查看)。
设置测试设备或虚拟机
本教程使用 Ubuntu Server 18.04 LTS 虚拟机 (VM) 作为示例。
安装设备更新代理和依赖项
在 APT 包存储库中注册 packages.microsoft.com:
sudo apt-get update sudo apt install curl curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ~/microsoft-prod.list sudo cp ~/microsoft-prod.list /etc/apt/sources.list.d/ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > ~/microsoft.gpg sudo cp ~/microsoft.gpg /etc/apt/trusted.gpg.d/ sudo apt-get update
在 IoT 设备上安装 deviceupdate-agent。 从 packages.microsoft.com 下载最新的 Device Update Debian 文件:
sudo apt-get install deviceupdate-agent
或者,将下载的 Debian 文件复制到测试 VM。 如果在计算机上使用 PowerShell,请运行以下 shell 命令:
scp <path to the .deb file> tester@<your vm's ip address>:~
然后远程连接到 VM,并在主文件夹中运行以下 shell 命令:
#go to home folder cd ~ #install latest Device Update agent sudo apt-get install ./<debian file name from the previous step>
转到 Azure IoT 中心,复制 IoT 设备的设备更新模块的主连接字符串。 请将
connectionData
字段的任何默认值替换为 du-config.json 文件中的主连接字符串:sudo nano /etc/adu/du-config.json
注意
可以改为复制设备的主连接字符串,但我们建议使用设备更新模块的字符串。 有关设置模块的信息,请参阅设备更新代理预配。
确保 /etc/adu/du-diagnostics-config.json 包含正确的日志收集设置。 例如:
{ "logComponents":[ { "componentName":"adu", "logPath":"/var/log/adu/" }, { "componentName":"do", "logPath":"/var/log/deliveryoptimization-agent/" } ], "maxKilobytesToUploadPerLogPath":50 }
重启设备更新代理:
sudo systemctl restart deviceupdate-agent
设置模拟组件
为了进行测试和演示,我们将在设备上创建以下模拟组件:
- 三个电机
- 两个摄像头
- "hostfs"
- "rootfs"
重要
上述组件配置基于名为 libcontoso-component-enumerator.so 的示例组件枚举器扩展的实现。 它还需要以下模拟组件清单数据文件:/usr/local/contoso-devices/components-inventory.json。
将演示文件夹复制到测试 VM 上的主目录。 然后,运行以下命令以将所需文件复制到正确的位置:
`~/demo/tools/reset-demo-components.sh`
reset-demo-components.sh
命令会代你执行以下步骤:它复制 components-inventory.json 并添加到 /usr/local/contoso-devices 文件夹。
它从 Assets 文件夹复制 Contoso 组件枚举器扩展 (libcontoso-component-enumerator.so) 并将其添加到 /var/lib/adu/extensions/sources 文件夹。
它会注册扩展:
sudo /usr/bin/AducIotAgent -E /var/lib/adu/extensions/sources/libcontoso-component-enumerator.so
导入示例更新
创建设备更新帐户和实例,包括配置 IoT 中心(如果尚未这样做)。 然后开始执行以下过程。
在最新设备更新版本中的“资产”下,下载代理更新的导入清单和映像。
登录到 Azure 门户并转到具有设备更新的 IoT 中心。 在左侧窗格中,选择“设备管理”>“更新”。
选择“更新”选项卡。
选择“+ 导入新更新”。
选择“+ 从存储容器中选择”,然后选择你的存储帐户和容器。
选择“上传”以添加在步骤 1 中下载的文件。
将父导入清单、子导入清单和有效负载文件上传到你的容器。
以下示例演示了上传的示例文件,这些文件用于更新已连接到智能吸尘器设备的摄像头。 它还包含一个预安装脚本,用于在无线更新之前关闭摄像头。
在示例中,父导入清单是 contoso.Virtual-Vacuum-virtual-camera.1.4.importmanifest.json。 包含摄像头更新详细信息的子导入清单是 Contoso.Virtual-Vacuum.3.3.importmanifest.json。 这两个清单文件名都遵循所需的格式并以 .importmanifest.json 结尾。
选择“选择”。
UI 现在会显示要导入到设备更新的文件列表。 选择“导入更新”。
导入过程随即开始,屏幕更改为“导入历史记录”部分。 选择“刷新”以查看进度,直到完成导入过程。 导入过程可能会在几分钟内完成,也可能需要更长时间,具体取决于更新的大小。
当“状态”列指示导入成功时,请选择“可用更新”选项卡。现在应会在列表中看到导入的更新。
有关导入过程的详细信息,请参阅将更新导入到设备更新。
查看设备组
Device Update 使用组来组织设备。 Device Update 根据设备的分配标记和兼容性属性自动将设备分组。 每个设备仅属于一个组,但组可以有多个子组来对不同的设备类进行排序。
转到页面顶部的“组和部署”选项卡。
查看组列表和更新合规性图表。 更新合规性图表显示了处于各种合规性状态的设备的计数:“最新的更新”、“可用的新更新”和“正在进行的更新”。 了解更新合规性。
应会看到一个设备组,其中包含在本教程中设置的模拟设备,以及新组中设备的任何可用更新。 如果设备不满足组的设备类要求,它们将显示在相应的无效组中。 若要从此视图中将最佳可用更新部署到新的用户定义组,请选择组旁边的“部署”。
有关标记和组的详细信息,请参阅管理设备组。
部署更新
创建组后,你应该会看到适用于你设备组的新更新,并在“最佳更新”下显示该更新的链接(你可能需要刷新一次)。
有关合规性的详细信息,请参阅设备更新合规性。
单击“组名称”选择目标组。 你将转到组基本信息下的组详细信息。
要启动部署,请前往“当前部署”选项卡。在“可用更新”部分,选择所需更新旁边的“部署”链接。 给定组的最佳可用更新将以“最佳”高亮表示。
计划你的部署,使其立即或将来开始,然后选择“创建”。
“部署”详细信息下的“状态”应转换为“活动”,而部署的更新应标记为“部署中”。
查看符合性图表。 此时会看到更新正在进行。
成功更新设备后,应会看到合规性图表和部署详细信息已更新,以反映这种状态。
监视更新部署
现在,你已使用 Device Update for IoT Hub 成功完成了端到端代理更新。
清理资源
如果你不再需要设备更新帐户、实例、IoT 中心和 IoT 设备,请进行清理。