在 Ubuntu 虚拟机上运行 Azure IoT Edge

适用于:确认图标 IoT Edge 1.1

重要

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

使用 Azure IoT Edge 运行时可将设备转变为 IoT Edge 设备。 该运行时可以部署在像 Raspberry Pi 一样小的设备上,也可以部署在像工业服务器一样大的设备上。 使用 IoT Edge 运行时配置设备后,即可开始从云中部署业务逻辑。

若要了解有关 IoT Edge 运行时如何工作以及包含哪些组件的详细信息,请参阅了解 Azure IoT Edge 运行时及其体系结构

本文列出了使用预提供的设备连接字符串安装并配置 Azure IoT Edge 运行时的 Ubuntu 18.04 LTS 虚拟机的步骤。 部署是使用 iotedge-vm-deploy 项目存储库中维护的基于 cloud-initAzure 资源管理器模板完成的。

首次启动时,该虚拟机会通过 cloud-init 安装最新版本的 Azure IoT Edge 运行时。 在运行时启动之前,该虚拟机还会设置提供的连接字符串,使你可以轻松配置和连接 IoT Edge 设备,而无需启动 SSH 或远程桌面会话。

使用“部署到 Azure”按钮进行部署

使用“部署到 Azure”按钮可以简化 GitHub 中维护的 Azure 资源管理器模板的部署。 本部分将演示如何使用 iotedge-vm-deploy 项目存储库中包含的“部署到 Azure 按钮”。

  1. 我们将使用 iotedge-vm-deploy Azure 资源管理器模板部署已启用 Azure IoT Edge 的 Linux VM。 若要开始,请单击下面的按钮:

    iotedge-vm-deploy 的“部署到 Azure”按钮

  2. 在新打开的窗口中,填写可用的表单字段:

    显示 iotedge-vm-deploy 模板的屏幕截图

    领域 说明
    订阅 要将虚拟机部署到活动的 Azure 订阅中。
    资源组 用于包含该虚拟机及其相关资源的现有或新建的资源组。
    区域 要部署虚拟机的地理区域,此值默认为所选资源组的位置。
    DNS 标签前缀 您选择的必需值,用于为虚拟机主机名添加前缀。
    管理员用户名 在部署中将被赋予根权限的用户名。
    设备连接字符串 在您预期的IoT 中心内创建的设备的设备连接字符串
    VM 大小 要部署的虚拟机的大小
    Ubuntu OS 版本 要在基础虚拟机上安装的 Ubuntu OS 版本。
    身份验证类型 根据偏好选择“sshPublicKey”或“密码”。
    管理员密码或密钥 SSH 公钥的值或密码的值,具体取决于所选的身份验证类型。

    填写所有字段后,单击底部的按钮以移动到 Next : Review + create 可以查看术语的位置,然后单击“ 创建 ”开始部署。

  3. 验证部署是否已成功完成。 虚拟机资源应已部署到所选资源组中。 请记下计算机名称,此名称应采用 vm-0000000000000 格式。 另外,请记下关联的“DNS 名称”,其格式应为 .<dnsLabelPrefix>.cloudapp.azure.com。

    可以从 Azure 门户中新部署的虚拟机的“概述”部分获取“DNS 名称”。

  4. 设置后若要通过 SSH 连接到此 VM,请在命令中使用关联的“DNS 名称”:

从 Azure CLI 部署

  1. 确保已通过以下命令安装 Azure CLI 的 IoT 扩展:

    az extension add --name azure-iot
    
  2. 接下来,如果在桌面上使用 Azure CLI,请先登录:

    az login
    
  3. 如果你有多个订阅,请选择要使用的订阅:

    1. 列出您的订阅列表:

      az account list --output table
      
    2. 复制要使用的订阅的 SubscriptionID 字段。

    3. 请用您复制的 ID 设置您的工作订阅:

      az account set -s <SubscriptionId>
      
  4. 创建新资源组(或者在后续步骤中指定现有的资源组):

    az group create --name IoTEdgeResources --___location westus2
    
  5. 创建新虚拟机:

    若要使用authenticationTypepassword,请参阅以下示例:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/1.1/edgeDeploy.json" \
    --parameters dnsLabelPrefix='my-edge-vm1' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id <REPLACE_WITH_DEVICE-NAME> --hub-name <REPLACE-WITH-HUB-NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminUsername='<REPLACE_WITH_USERNAME>' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_SECRET_PASSWORD>"
    

    若要使用 SSH 密钥进行身份验证,可为 authenticationType 指定 ,然后在 adminPasswordOrKey 参数中提供 SSH 密钥的值。 下面显示了一个示例。

    #Generate the SSH Key
    ssh-keygen -m PEM -t rsa -b 4096 -q -f ~/.ssh/iotedge-vm-key -N ""
    
    #Create a VM using the iotedge-vm-deploy script
    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/1.1/edgeDeploy.json" \
    --parameters dnsLabelPrefix='my-edge-vm1' \
    --parameters adminUsername='<REPLACE_WITH_USERNAME>' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id <REPLACE_WITH_DEVICE-NAME> --hub-name <REPLACE-WITH-HUB-NAME> -o tsv) \
    --parameters authenticationType='sshPublicKey' \
    --parameters adminPasswordOrKey="$(< ~/.ssh/iotedge-vm-key.pub)"
    
  6. 验证部署是否已成功完成。 虚拟机资源应已部署到所选资源组中。 请记下计算机名称,此名称应采用 vm-0000000000000 格式。 另外,请记下关联的“DNS 名称”,其格式应为 .<dnsLabelPrefix>.cloudapp.azure.com。

    可以从上一步骤的 JSON 格式输出中的 outputs 部分获取 DNS 名,它是 公共 SSH 条目的一部分。 可以使用此条目的值通过 SSH 连接到新部署的计算机。

    "outputs": {
      "public SSH": {
        "type": "String",
        "value": "ssh <adminUsername>@<DNS_Name>"
      }
    }
    

    也可以从 Azure 门户中新部署的虚拟机的“概述”部分获取“DNS 名称”。

  7. 设置后若要通过 SSH 连接到此 VM,请在命令中使用关联的“DNS 名称”:

后续步骤

配置了安装运行时的 IoT Edge 设备后,现在可以部署 IoT Edge 模块

如果无法正确安装 IoT Edge 运行时,请参阅故障排除页。

若要将现有安装更新到最新版本的 IoT Edge,请参阅更新 IoT Edge 安全守护程序和运行时

若要打开端口以通过 SSH 或其他入站连接访问 VM,请参阅有关打开 Linux VM 的端口和终结点的 Azure 虚拟机文档