使用对称密钥在 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,适用于 Linux 的 Azure IoT Edge on Windows

若要在 Windows 上使用适用于 Linux 的 Azure IoT Edge,可以按照 等效的操作指南中的步骤进行操作。

任务如下:

  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 的 AMD64 会话,而不是 PowerShell(x86)。

  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 执行此操作。