在 Windows 设备上安装和预配适用于 Linux 的 Azure IoT Edge

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

使用 Azure IoT Edge 运行时可将设备转变为 IoT Edge 设备。 此运行时可以部署在小到电脑大到工业服务器的设备上。 使用 IoT Edge 运行时配置设备后,即可开始从云中部署业务逻辑。 若要了解详细信息,请参阅了解 Azure IoT Edge 运行时及其体系结构

Azure IoT Edge for Linux on Windows 支持在 Windows 设备上运行的 Linux 虚拟机中安装 IoT Edge。 Linux 版本的 Azure IoT Edge 和随它部署的任何 Linux 模块都在虚拟机上运行。 在虚拟机中,Windows 应用程序和代码以及 IoT Edge 运行时和模块可以自由地彼此交互。

本文列出了在 Windows 设备上设置 IoT Edge 的步骤。 这些步骤将部署一台 Linux 虚拟机(其中包含要在 Windows 设备上运行的 IoT Edge 运行时),然后为设备预配其 IoT 中心设备标识。

备注

在 Windows 环境中使用 Azure IoT Edge 时建议使用 IoT Edge for Linux on Windows。 但仍然可以使用 Windows 容器。 如果希望使用 Windows 容器,请参阅使用 Windows 容器安装和管理 Azure IoT Edge

先决条件

  • 含有效订阅的 Azure 帐户。 如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

  • Azure 中的免费或标准层 IoT 中心

  • 一台满足以下最低系统要求的 Windows 设备:

    • Windows 10 版本 1809 或更高版本;内部版本 17763 或更高版本
    • Professional、Enterprise 或 Server 版
    • 最小可用内存:1 GB
    • 最小可用磁盘空间:10 GB
    • 虚拟化支持
  • 如果你要使用 Windows Admin Center 安装和管理 IoT Edge 设备,请确保有权访问 Windows Admin Center 并安装了 Azure IoT Edge 扩展:

    1. 下载并运行 Windows Admin Center 安装程序。 按照安装向导的提示安装 Windows Admin Center。

    2. 安装完成后,使用受支持的浏览器打开 Windows Admin Center。 受支持的浏览器包括 Microsoft Edge(Windows 10 版本 1709 或更高版本)、Google Chrome 和 Microsoft Edge Insider。

    3. 当你第一次使用 Windows Admin Center 时,系统会提示你选择要使用的证书。 请选择“Windows Admin Center 客户端”作为你的证书。

    4. 安装 Azure IoT Edge 扩展。 选择 Windows Admin Center 仪表板右上方的齿轮图标。

      选择仪表板右上方的齿轮图标以访问设置。

    5. 在“设置”菜单上的“网关”下,选择“扩展”。

    6. 在“可用扩展”选项卡上的扩展列表中找到“Azure IoT Edge”。 选择它,然后选择扩展列表上方的“安装”提示。

    7. 安装完成后,你应该会在“已安装的扩展”选项卡上的已安装扩展列表中看到 Azure IoT Edge。

  • 如果要在 Azure IoT Edge for Linux on Windows 部署中使用 GPU 加速的 Linux 模块,则需要考虑多个配置选项。 需要根据 GPU 体系结构安装正确的驱动程序,并且可能需要访问 Windows 预览体验计划内部版本。

选择预配方法

Azure IoT Edge for Linux on Windows 支持以下预配方法:

创建新部署

在目标设备上部署 Azure IoT Edge for Linux on Windows。

在目标设备上安装 IoT Edge for Linux on Windows(如果尚未安装)。

备注

以下 PowerShell 过程概述了如何在 Windows 上将适用于 Linux 的 IoT Edge 部署到本地设备。 若要使用 PowerShell 部署到远程目标设备,请使用远程 PowerShell 与远程设备建立连接,并在该设备上远程运行这些命令。

  1. 在已提升权限的 PowerShell 会话中,运行以下每个命令来下载 IoT Edge for Linux on Windows。

    $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
    $ProgressPreference = 'SilentlyContinue'
    Invoke-WebRequest "https://aka.ms/AzEflowMSI" -OutFile $msiPath
    
  2. 在设备上安装 IoT Edge for Linux on Windows。

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    通过向安装命令中添加 INSTALLDIR="<FULLY_QUALIFIED_PATH>"VHDXDIR="<FULLY_QUALIFIED_PATH>" 参数,可以指定自定义 IoT Edge for Linux on Windows 安装和 VHDX 目录。

  3. 在目标设备上将执行策略设置为 AllSigned(如果尚未设置)。 可以在已提升权限的 PowerShell 提示符中使用以下命令检查当前执行策略:

    Get-ExecutionPolicy -List
    

    如果 local machine 的执行策略不是 AllSigned,则可以使用以下命令设置执行策略:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  4. 创建 IoT Edge for Linux on Windows 部署。

    Deploy-Eflow
    

    Deploy-Eflow 命令采用可帮助你自定义部署的可选参数。

若要使用 GPU 直通,需要将“gpuName”、“gpuPassthroughType”和“gpuCount”参数添加到 Deploy-Eflow 命令中 。 有关所有可用的可选参数的信息,请参阅适用于 IoT Edge for Linux on Windows 的 PowerShell 函数

警告

启用硬件设备直通可能会增加安全风险。 Azure 建议使用 GPU 供应商提供的设备缓解驱动程序(如果适用)。 有关详细信息,请参阅使用离散设备分配部署图形设备

  1. 输入“Y”接受许可条款。

  2. 根据自己的偏好,输入“O”或“R”以打开或关闭“可选诊断数据”。

    成功的部署会在消息末尾显示“部署成功”

部署完成后,便可预配设备了。

若要预配你的设备,可以访问下面的链接以跳转到你选择的预配方法对应的部分:

预配你的设备

选择一种用于预配你的设备的方法,并按照相应部分中的说明进行操作。 你可以使用 Windows Admin Center 或已提升权限的 PowerShell 会话来预配你的设备。

选项 1:使用连接字符串进行手动预配

本部分介绍了如何使用 Azure IoT Edge 设备的连接字符串手动预配你的设备。

  1. Azure 门户中,导航到 IoT 中心的“IoT Edge”选项卡。

  2. 单击设备的设备 ID。 复制“主连接字符串”字段。

  3. 将其粘贴到以下命令中以覆盖占位符文本,并在目标设备上的已提升权限的 PowerShell 会话中运行该命令。

    Provision-EflowVm -provisioningType manual -devConnString "<CONNECTION_STRING_HERE>"
    

选项 2:通过 DPS 使用对称密钥进行预配

本部分介绍了如何使用 DPS 和对称密钥自动预配你的设备。

  1. 将以下命令复制到文本编辑器中。 根据详述内容将占位符文本替换为你的信息。

    Provision-EflowVm -provisioningType symmetric -scopeId <ID_SCOPE_HERE> -registrationId <REGISTRATION_ID_HERE> -symmKey <PRIMARY_KEY_HERE>
    
  2. Azure 门户中,导航到你的 DPS 实例。

  3. 在“概述”选项卡上,复制“ID 作用域”值。 将其粘贴到命令中以覆盖相应的占位符文本。

  4. 在 Azure 门户中的“管理注册”选项卡上,选择你创建的注册。 复制注册详细信息中的“主密钥”值。 将其粘贴到命令中以覆盖相应的占位符文本。

  5. 提供设备的注册 ID 以替换命令中相应的占位符文本。

  6. 在目标设备上已提升权限的 PowerShell 会话中运行该命令。

选项 3:通过 DPS 使用 X.509 证书进行预配

本部分介绍了如何使用 DPS 和 X.509 证书自动预配你的设备。

  1. 将以下命令复制到文本编辑器中。 根据详述内容将占位符文本替换为你的信息。

    Provision-EflowVm -provisioningType x509 -scopeId <ID_SCOPE_HERE> -registrationId <REGISTRATION_ID_HERE> -identityCertLocWin <ABSOLUTE_CERT_SOURCE_PATH_ON_WINDOWS_MACHINE> -identityPkLocWin <ABSOLUTE_PRIVATE_KEY_SOURCE_PATH_ON_WINDOWS_MACHINE> -identityCertLocVm <ABSOLUTE_CERT_DEST_PATH_ON_LINUX_MACHINE -identityPkLocVm <ABSOLUTE_PRIVATE_KEY_DEST_PATH_ON_LINUX_MACHINE>
    
  2. Azure 门户中,导航到你的 DPS 实例。

  3. 在“概述”选项卡上,复制“ID 作用域”值。 将其粘贴到命令中以覆盖相应的占位符文本。

  4. 提供设备的注册 ID 以替换命令中相应的占位符文本。

  5. 将相应的占位符文本替换为你的证书文件的绝对源路径。

  6. 将相应的占位符文本替换为你的私钥文件的绝对源路径。

  7. 在目标设备上已提升权限的 PowerShell 会话中运行该命令。

验证成功的配置

验证是否已在 IoT Edge 设备上成功安装并配置了 IoT Edge for Linux on Windows。

重要

如果使用 IoT Edge for Linux on Windows PowerShell 公共函数,请确保将目标设备上的执行策略设置为 AllSigned。 确保满足适用于 IoT Edge for Linux on Windows 的 PowerShell 函数的所有先决条件。

  1. 在 PowerShell 会话中使用以下命令,登录到 Windows 虚拟机上的 IoT Edge for Linux:

    Connect-EflowVm
    

    备注

    唯一被允许通过 SSH 登录到虚拟机的帐户是创建该虚拟机的用户。

  2. 登录后,可以使用以下 Linux 命令查看正在运行的 IoT Edge 模块的列表:

    sudo iotedge list
    
  3. 如果需要对 IoT Edge 服务进行故障排除,请使用以下 Linux 命令。

    1. 若需排查服务问题,请检索服务日志。

      sudo journalctl -u iotedge
      
    2. 使用 check 工具验证设备的配置和连接状态。

      sudo iotedge check
      

创建新的 IoT Edge 设备时,它将在 Azure 门户中显示状态代码 417 -- The device's deployment configuration is not set。 此状态正常,表示设备已准备好接收模块部署。

后续步骤