你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Ubuntu 22.04 包代理的 Azure Device Update for IoT Hub

Device Update for Azure IoT Hub 支持基于映像、包和脚本的更新。 本教程演示了如何使用 Device Update Ubuntu Server 22.04 x64 包代理执行端到端包更新以更新 Azure IoT Edge。

基于包的更新是有针对性的更新,只改变特定设备组件或应用程序。 这些更新与基于映像的更新相比具有更低的带宽消耗和更短的下载与安装时间,可减少设备停机时间并避免创建映像的开销。 在基于包的更新中,APT 清单会向 Device Update 代理提供从指定存储库下载和安装指定包及其依赖项所需的信息。

本教程逐步讲解如何安装 Microsoft Defender for IoT,但你可以使用类似的步骤(例如 IoT Edge 本身或它使用的容器引擎)更新其他包。 即使你使用其他 OS 平台配置,本教程中的工具和概念仍然适用。

在本教程中,你将了解:

  • 下载并安装设备更新代理及其依赖项。
  • 将组标记添加到设备。
  • 导入包更新。
  • 部署包更新。
  • 查看更新部署历史记录。

先决条件

准备设备

为方便起见,本教程使用基于 cloud-initAzure 资源管理器 (ARM) 模板来快速设置 Ubuntu 22.04 LTS 虚拟机 (VM)。 该模板同时安装 IoT Edge 运行时和 Device Update 包代理,并使用你提供的 IoT Edge 设备连接字符串自动为设备配置预配信息。 使用 ARM 模板还可以避免启动安全外壳 (SSH) 会话来完成设置的必要性。

  1. 若要运行模板,请选择以下“部署到 Azure”按钮:

    用于 iotedge-vm-deploy 的“部署到 Azure”按钮的屏幕截图

  2. 填写以下信息:

    • 订阅:要将 VM 部署到的活动 Azure 订阅。
    • 资源组:包含 VM 及其资源的现有或新资源组。
    • 区域:要将 VM 部署到的地理区域,默认为资源组的位置。
    • DNS 标签前缀:作为 VM 主机名前缀的值。
    • 管理员用户名:用于在部署时提供根权限的用户名。
    • 身份验证类型:选择 sshPublicKey密码
    • 管理员密码SSH 公钥源SSH 密钥类型密钥对名称:密码或 SSH 公钥信息,基于身份验证类型的选择。
    • VM 大小:要部署的 VM 的大小
    • Ubuntu OS 版本:保留为 22_04-lts
    • 设备连接字符串:你之前复制的 IoT Edge 连接字符串。
  3. 在页面底部选择“查看 + 创建”。 验证成功后,选择“创建”以开始模板部署。

  4. 验证部署是否已成功完成,并在部署完成后等几分钟,以便安装后操作和配置结束,以完成 IoT Edge 和设备包更新代理的安装。

  5. 你应会在所选资源组中看到一个 VM 资源。 记下计算机名称,其格式为 vm-0000000000000。 选择 VM 名称,然后在 VM 概览页上,记下“DNS 名称”,格式为 <dnsLabelPrefix><location>.cloudapp.azure.com

    显示 IoT Edge VM 的 DNS 名称的屏幕截图。

提示

设置后若要通过 SSH 连接到此 VM,请通过命令 ssh <admin username>@<DNS name> 使用关联的“DNS 名称”。

在 VM 上安装 Device Update 代理

重要

Azure Device Update for IoT Hub 软件受以下许可条款的约束:

使用代理之前,请先阅读许可条款。 安装和使用代理即表示你接受这些条款。 如果不同意许可条款,请不要使用 Device Update 代理。

  1. 若要在 VM 上安装 Device Update 代理,请运行以下命令。

    sudo apt-get install deviceupdate-agent
    
  2. 使用以下命令打开 du-config.json 配置文件。

    sudo nano /etc/adu/du-config.json
    
  3. 在文件中,将所有 <placeholder> 值替换为你自己的配置。 将你的 connectionType 设置为 "AIS",将 connectionData 设置为空字符串。 如需示例文件,请参阅示例 du-config.json 文件内容

  4. 通过运行以下命令重启 Device Update 代理。

    sudo systemctl restart deviceupdate-agent
    

注意

如果之前在此设备上使用了模拟器代理,请运行以下命令以调用 APT 处理程序并部署本教程中的无线包更新。

sudo /usr/bin/AducIotAgent --register-content-handler /var/lib/adu/extensions/sources/libmicrosoft_apt_1.so --update-type 'microsoft/apt:1'

将组标记添加到设备

Device Update 可根据设备的已分配标记和兼容性属性自动将设备组织为组。 每台设备只能属于一个组,但组可以包含多个子组来对不同的设备类进行排序。 有关标记和组的详细信息,请参阅管理设备组

  1. 在 Device Update 实例的 Azure 门户 IoT 中心页上,从左侧导航中选择“设备管理”>“设备”。

  2. 转到你的设备的设备孪生模块标识孪生。

  3. 在设备孪生或 Device Update 代理模块标识孪生文件中,通过将现有 Device Update 标记值设置为 null 来删除任何这些值,然后添加以下新的 Device Update 组标记。

    如果正在 Device Update 代理中使用设备标识,请在设备孪生中进行这些更改。 如果正在 Device Update 代理模块中使用模块标识,请在模块标识孪生中添加标记。

    "tags": {
        "ADUGroup": "<GroupTagValue>"
    },
    

    以下屏幕截图显示了文件中添加标记的位置。

    显示包含标记信息的孪生体的屏幕截图。

  4. 选择“保存”。

导入更新

Tutorial_IoTEdge_PackageUpdate.zip 文件具有本教程所需的文件。

  1. GitHub Device Update 发布页上最新版本的“资产”部分下载 Tutorial_IoTEdge_PackageUpdate.zip 文件。

  2. 解压缩 文件。 提取的 Tutorial_IoTEdge_PackageUpdate 文件夹包含 sample-defender-iot-apt-manifest.json 示例 APT 清单及其相应的 sample-defender-iot--importManifest.json 导入清单。

  3. 在 Device Update 实例的 Azure 门户 IoT 中心页上,从左侧导航中选择“设备管理”>“更新”。

  4. 在“更新”页上,选择“导入新更新”。

  5. 在“导入更新”页上,选择“从存储容器中选择”。

  6. 在“存储帐户”页面上,选择现有存储帐户,或通过选择“存储帐户”来创建新帐户。

  7. 在“容器”页面上,选择现有容器,或通过选择“容器”来创建新容器。 你将使用容器来暂存更新文件以进行导入。

    显示存储帐户和容器的屏幕截图。

    提示

    为避免意外地从之前的更新中导入文件,建议每次导入更新时使用新容器。 如果不使用新容器,请务必删除现有容器中的任何文件。

  8. 在容器页上,选择“上传”,拖放或浏览然后选择你下载的更新文件,然后选择“上传”。 上传后,文件会显示在容器页上。

  9. 查看并选择要导入的文件,然后选择“选择”。

    屏幕截图显示了如何选择已上传的文件。

  10. 在“导入更新”屏幕上,选择“导入更新”。

    屏幕截图显示了“导入更新”。

导入过程将会开始,屏幕会切换到“更新”屏幕。 导入成功后,它将显示在“更新”选项卡上。有关导入过程的详细信息,请参阅将更新导入到 Device Update

屏幕截图显示了作业状态。

选择设备组

可以使用已应用于设备的组标记将更新部署到设备组。 选择“更新”页顶部的“组和部署”选项卡,以查看组和部署列表以及更新符合性图表。

更新合规性图表显示了处于各种合规性状态的设备的计数:“最新的更新”、“可用的新更新”和“正在进行的更新”。 有关详细信息,请参阅 Device Update 合规性

在“组名”下,可以看到连接到此 IoT 中心的设备的所有设备组及其可用更新的列表,以及“状态”下用于部署更新的链接。 不满足组的设备类要求的任何设备将会显示在相应的无效组中。 有关标记和组的详细信息,请参阅管理设备组

你应会看到一个设备组,其中包含在本教程中设置的设备,以及组中设备的可用更新。 可能需要刷新页面。 要从此视图中将最佳可用更新部署组,请选择组旁边的“部署”。

屏幕截图显示了更新符合性视图。

部署更新

  1. 在“组详细信息”页上,选择“当前部署”选项卡,然后选择“可用更新”部分中所需更新旁边的“部署”。 该组的最佳可用更新将以“最佳”突出显示。

    屏幕截图显示了如何选择一个更新。

  2. 在“创建部署”页上,计划要立即或在将来开始的部署,然后选择“创建”。

    显示如何创建部署的屏幕截图。

    提示

    默认情况下,开始日期和时间距当前时间 24 小时。 如果希望更快开始部署,请务必选择其他日期和时间。

  3. 在“组详细信息”页上的“部署详细信息”下,“状态”将变为“活动”。 在“可用更新”下,所选更新标记为“(正在部署)”。

    将部署显示为“活动”的屏幕截图。

  4. 在“更新”页的“组和部署”选项卡上,查看符合性图表以确定更新正在进行。 设备成功更新后,符合性图表和部署详细信息会更新以体现该状态。

    显示更新成功的屏幕截图。

查看更新部署历史记录

  1. 选择“组详细信息”页顶部的“部署历史记录”选项卡,然后选择所创建部署旁边的“详细信息”链接。

    屏幕截图显示了“部署历史记录”。

  2. 在“部署详细信息”页上,选择“刷新”图标以查看最新的状态详细信息。

    显示部署详细信息的屏幕截图。

清理资源

如果不再需要在本教程中创建的资源,则可将其删除。

  1. Azure 门户中,导航到包含资源的资源组。
  2. 如果要删除组中的所有资源,请选择“删除资源组”。
  3. 如果只想删除部分资源,请使用复选框选择资源,然后选择“删除”。