使用对称密钥在 Windows 上大规模创建和预配 IoT Edge 设备

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

重要

IoT Edge 1.1 终止支持日期为 2022 年 12 月 13 日。 请查看 Microsoft 产品生命周期,了解此产品、服务、技术或 API 的受支持情况。 有关更新到最新版本IoT Edge的详细信息,请参阅更新IoT Edge

本文提供有关使用对称密钥自动预配一个或多个 Windows IoT Edge 设备的详尽说明。 可以通过 Azure IoT 中心设备预配服务 (DPS) 自动预配 Azure IoT Edge 设备。 如果你不熟悉自动预配过程,请在继续操作之前查看预配概述

注意

从 Azure IoT Edge 1.2 版开始,将不再支持带有 Windows 容器的 Azure IoT Edge。

请考虑使用新方法在 Windows 设备上运行 IoT Edge:Azure IoT Edge for Linux on Windows

要使用 Azure IoT Edge for Linux on Windows,可按照等效操作指南中的步骤操作。

任务如下:

  1. 为单个设备创建单个注册,或为一组设备创建组注册。
  2. 安装 IoT Edge 运行时并连接到 IoT 中心。

对称密钥证明是一种通过设备预配服务实例对设备进行身份验证的简单方法。 此证明方法表示不熟悉设备预配或不具备严格安全要求的开发人员的“Hello world”体验。 使用 TPMX.509 证书的设备证明更加安全,且应该用于更严格的安全要求。

先决条件

云资源

  • 一个活动的 IoT 中心
  • Azure 中 IoT 中心设备预配服务的一个实例,已链接到你的 IoT 中心

设备要求

一个充当 IoT Edge 设备的物理设备或虚拟 Windows 设备。

需要定义一个唯一的注册 ID 来标识每个设备。 可以使用 MAC 地址、序列号或设备中的任何唯一信息。 例如,可以使用 MAC 地址和序列号的组合,构成以下注册 ID 字符串:sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6。 有效字符为小写字母数字和短划线 (-)。

创建 DPS 注册

创建注册以通过 DPS 预配一个或多个设备。

如果要预配单个 IoT Edge 设备,请创建单个注册。 如果需要预配多个设备,请按照创建 DPS 组注册的步骤进行操作。

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

有关设备预配服务中的注册的详细信息,请参阅如何管理设备注册

创建 DPS 单独注册

提示

本文中的步骤适用于 Azure 门户,但你也可使用 Azure CLI 创建单个注册。 有关详细信息,请参阅 az iot dps enrollment。 作为 CLI 命令的一部分,使用 edge-enabled 标志指定注册适用于单个 IoT Edge设备。

  1. Azure 门户中,导航到 IoT 中心设备预配服务实例。

  2. 在“设置”下,选择“管理注册”。

  3. 选择“添加个人注册”,然后完成以下步骤以配置注册:

    1. 对于“机制”,请选择“对称密钥”。

    2. 为设备提供一个唯一的注册 ID。

    3. (可选)为设备提供一个 IoT 中心设备 ID。 可以使用设备 ID 将单个设备指定为模块部署的目标。 如果未提供设备 ID,则会使用注册 ID。

    4. 选择“True”,声明该注册适用于 IoT Edge 设备。

    5. (可选)向“初始设备孪生状态”添加一个标记值。 可以使用标记将设备组指定为模块部署的目标。 例如:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. 选择“保存” 。

  4. 复制个人注册的“主密钥”值,以便在安装 IoT Edge 运行时的情况下使用。

既然此设备已存在注册,IoT Edge 运行时在安装期间可以自动预配设备。

安装 IoT Edge

在本节中,你将准备 IoT Edge 的 Windows VM 或物理设备。 然后安装 IoT Edge。

Azure IoT Edge 依赖于 OCI 兼容的容器运行时。 Moby 是一种基于 Moby 的引擎,包含在安装脚本中,这意味着无需执行其他步骤来安装引擎。

要安装 IoT Edge 运行时:

  1. 以管理员身份运行 PowerShell。

    使用 PowerShell 的 AMD64 会话,不要使用 PowerShell(x86)。 如果不确定你使用的是哪种会话类型,请运行以下命令:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. 运行 Deploy-IoTEdge 命令,它将执行以下任务:

    • 检查 Windows 计算机的版本是否受支持
    • 启用容器功能
    • 下载 moby 引擎和 IoT Edge 运行时
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. 如果出现提示,请重启设备。

在设备上安装 IoT Edge 时,可使用附加参数来修改过程,包括:

  • 定向流量,使其通过代理服务器
  • 将安装程序指向本地目录进行脱机安装

有关这些附加参数的详细信息,请参阅用于带有 Windows 容器的 IoT Edge 的 PowerShell 脚本

为设备预配其云标识

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

准备好以下信息:

  • DPS 的“ID 范围”值
  • 为设备创建的“注册 ID”
  • 个人注册的主密钥,或者使用组注册时设备的派生密钥。
  1. 在管理员模式下打开 PowerShell 窗口。 在安装 IoT Edge 而不是 PowerShell (x86) 时,请确保使用 PowerShell 的 AMD64 会话。

  2. Initialize-IoTEdge 命令在计算机上配置 IoT Edge 运行时。 该命令默认为使用 Windows 容器手动预配,因此使用 -DpsSymmetricKey 标志借助对称密钥身份验证来使用自动预配。

    请将 paste_scope_id_herepaste_registration_id_herepaste_symmetric_key_here 的占位符值替换为前面收集的数据。

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -DpsSymmetricKey -ScopeId paste_scope_id_here -RegistrationId paste_registration_id_here -SymmetricKey paste_symmetric key_here
    

验证是否成功安装

如果运行时成功启动,则可以进入 IoT 中心,开始将 IoT Edge 模块部署到你的设备。

可以验证是否使用了在设备预配服务中创建的单独注册。 在 Azure 门户中导航到你的设备预配服务实例。 打开创建的个人注册的注册详细信息。 注意注册状态是否为“已分配”并且设备 ID 已列出。

在设备上,使用以下命令验证是否已成功安装并启动 IoT Edge。

检查 IoT Edge 服务的状态。

Get-Service iotedge

检查服务日志。

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

列出正在运行的模块。

iotedge list

后续步骤

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