在 Windows 上使用虚拟 TPM 创建和预配模拟 IoT Edge 设备

适用于:“是”图标 IoT Edge 1.1

可以使用设备预配服务自动预配 Azure IoT Edge 设备,就像预配未启用 Edge 的设备一样。 如果你不熟悉自动预配过程,请在继续操作之前查看预配概述。

DPS 在个人注册和组注册中都支持 IoT Edge 设备的对称密钥证明。 对于组注册,如果在对称密钥证明中将“是 IoT Edge 设备”选项选为 TRUE,则在该注册组下注册的所有设备都将标记为 IoT Edge 设备。

本文介绍如何使用以下步骤,在模拟 IoT Edge 设备上测试自动预配:

  • 创建 IoT 中心设备预配服务 (DPS) 的实例。
  • 使用用于确保硬件安全性的模拟受信任平台模块 (TPM) 在 Windows 计算机上创建一个模拟设备。
  • 为设备创建个人注册。
  • 安装 IoT Edge 运行时并将设备连接到 IoT 中心。

提示

本文介绍了如何通过在虚拟设备上使用 TPM 证明来测试自动预配,但是在使用物理 TPM 硬件时,它大部分也同样适用。

先决条件

  • 一台 Windows 开发计算机。 本文使用 Windows 10。
  • 活动的 IoT 中心。

注意

将 TPM 证明与 DPS 一起使用时,TPM 2.0 是必需的,并且只能用于创建个人(而非组)注册。

设置 IoT 中心设备预配服务

在 Azure 中创建 IoT 中心设备预配服务的新实例,并将其链接到 IoT 中心。 可以遵照设置 IoT 中心 DPS 中的说明操作。

运行设备预配服务后,从概述页复制“ID 范围”的值。 配置 IoT Edge 运行时时,需要使用此值。

提示

如果使用的是物理 TPM 设备,则需要确定认可密钥,该密钥对于每个 TPM 芯片都是唯一的,并且可以从与之关联的 TPM 芯片制造商处获得。 例如,可以通过创建认可密钥的 SHA-256 哈希来为 TPM 设备派生唯一的注册 ID

请按照文章如何使用 Azure 门户管理设备注册中的说明在 DPS 中创建注册,然后继续执行本文中的安装 IoT Edge 运行时部分以继续。

模拟 TPM 设备

在 Windows 开发计算机上创建模拟 TPM 设备。 检索设备的“注册 ID”和“认可密钥”,并使用它们在 DPS 中创建个人注册条目。

在 DPS 中创建注册时,可以声明“初始设备孪生状态”。 在设备孪生中可以设置标记,以便按解决方案中所需的任何指标(例如区域、环境、位置或设备类型)将设备分组。 这些标记用于创建自动部署

选择要用来创建模拟设备的 SDK 语言,并遵循本文中的步骤,直到创建了个人注册为止。

创建个人注册时,请选择“True” ,将 Windows 开发计算机上的模拟 TPM 设备声明为“IoT Edge设备” 。

提示

在 Azure CLI 中,可以创建注册注册组,并使用“支持 Edge” 标志来指定某个设备或设备组是 IoT Edge 设备。

模拟设备和个人注册指南:

创建个人注册后,保存“注册 ID”的值。 配置 IoT Edge 运行时时,需要使用此值。

安装 IoT Edge 运行时

IoT Edge 运行时部署在所有 IoT Edge 设备上。 该运行时的组件在容器中运行,允许你将其他容器部署到设备,以便在边缘上运行代码。 在运行模拟 TPM 的设备上安装 IoT Edge 运行时。

按照安装 Azure IoT Edge 运行时中的步骤操作,然后返回到本文来预配设备。

提示

在安装和测试期间,确保运行 TPM 模拟器的窗口处于打开状态。

用预配信息配置设备

在设备上安装运行时后,请借助它用于连接到设备预配服务和 IoT 中心的信息来配置设备。

  1. 了解在先前部分中收集的 DPS ID 范围和设备注册 ID 。

  2. 在管理员模式下打开 PowerShell 窗口。 在安装 IoT Edge 而不是 PowerShell (x86) 时,请确保使用 PowerShell 的 AMD64 会话。

  3. Deploy-IoTEdge 命令检查 Windows 计算机是否使用了支持的版本,启用容器功能,然后下载 moby 运行时和 IoT Edge 运行时。 该命令默认使用 Windows 容器。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  4. 此时,IoT Core 设备可能会自动重启。 Windows 10 或 Windows Server 设备可能会提示你重启。 如果是这样,请立即重启设备。 设备准备就绪后,再次以管理员身份运行 PowerShell。

  5. Initialize-IoTEdge 命令在计算机上配置 IoT Edge 运行时。 该命令默认为使用 Windows 容器手动预配。 通过 -Dps 标志使用设备预配服务,而不是手动预配。

    请将 {scope_id}{registration_id} 的占位符值替换为前面收集的数据。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -Dps -ScopeId {scope ID} -RegistrationId {registration ID}
    

验证是否成功安装

如果运行时成功启动,则可以进入 IoT 中心,开始将 IoT Edge 模块部署到你的设备。 在设备上使用以下命令验证是否已成功安装并启动运行时。

检查 IoT Edge 服务的状态。

Get-Service iotedge

检查过去 5 分钟的服务日志。

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

列出正在运行的模块。

iotedge list

后续步骤

使用设备预配服务注册过程可以在预配新设备的同时,设置设备 ID 和设备孪生标记。 可以在自动设备管理中,使用这些值将单个设备或设备组指定为目标。 了解如何使用 Azure 门户大规模部署和监视 IoT Edge 模块,或使用 Azure CLI 执行此操作