部署支持 IoT Edge 的 Linux VM

已完成

若要测试 IoT Edge 配置,需要将 IoT Edge 运行时部署到虚拟机 (VM)。

在将 IoT Edge 设备部署到店铺之前,需要验证设备是否按预期工作。 为了测试方案,你计划将 IoT Edge 运行时部署到 Azure Linux VM,然后将 IoT Edge 模块部署到此 VM。

下面回顾一些 IoT Edge 核心概念,了解 IoT Edge 设备如何连接到 Azure IoT Central 应用程序,以及 Azure IoT Central 如何将 IoT Edge 模块部署到 IoT Edge 运行时。

什么是 IoT Edge 运行时?

Azure IoT Edge 运行时允许在 IoT Edge 设备上使用自定义逻辑和云逻辑。 运行时位于 IoT Edge 设备上,并执行管理和通信操作。 运行时执行以下操作:

  • 在设备上安装和更新工作负荷。

  • 维护设备上的 Azure IoT Edge 安全标准。

  • 确保 IoT Edge 模块始终运行。

  • 将模块运行状况报告给云以进行远程监控。

  • 管理以下两者之间的通信:

    • 下游设备和 IoT Edge 设备
    • IoT Edge 设备上的模块
    • IoT Edge 设备和云
    • IoT Edge 设备

什么是 IoT Edge 模块?

IoT Edge 模块是执行单位,在边缘运行业务逻辑。 模块以 Docker 兼容容器的方式来实现。 可以将多个模块配置为互相通信,从而创建一个数据处理管道。 可以开发自定义模块,或者将某些 Azure 服务打包到模块中,以脱机方式在边缘提供见解。 因为模块在 Docker 容器中运行,所以无论安装在 VM 上还是安装在物理设备上,它们的行为方式都相同。

下一单元将安装 IoT Edge 运行时,并部署一个自定义模块,用于收集要发送到 Azure IoT Central 的环境数据。 然后,Azure IoT Central 操作员可以在应用程序中的仪表板上查看遥测数据,从而监视店铺的环境状况。

IoT Edge 设备如何连接到 Azure IoT Central?

IoT Edge 设备与其他设备一样,也是使用 IoT 中心设备预配服务 (DPS) 连接到 Azure IoT Central 应用程序。 在上一单元中,当你将设备添加到 Azure IoT Central 应用程序时,记下了范围 ID 和设备密钥。 现在将这些值添加到 IoT Edge 设备上的 IoT Edge 配置文件中。 此 TOML 文件的相关部分如下所示。 registration_id 是设备 ID:

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "YOUR_ID_SCOPE"

[provisioning.attestation]
method = "symmetric_key"
registration_id = "YOUR_DEVICE_ID"
symmetric_key = { value = "YOUR_DEVICE_KEY" }

在下一单元中,用于 IoT Edge 设备的部署脚本将为你编辑配置文件。

Azure IoT Central 如何将模块部署到 IoT Edge 运行时?

上一单元为环境传感器创建设备模板时,已将部署清单上传到该模板。 当 IoT Edge 运行时连接到 Azure IoT Central 应用程序时,它会下载部署清单。 该运行时使用部署清单中的信息来确定要安装的模块和配置方式。 可从容器注册表(例如 Azure 容器注册表或 Docker Hub)下载模块。

你使用的部署清单将安装 edgeAgentedgeHub 这两个必需的系统模块,以及一个自定义 SimulatedTemperatureSensor 模块。 此自定义模块将环境遥测数据和机器遥测数据发送到 Azure IoT Central,并且具有 SendData 和 SendInterval 这两个属性,操作员可以使用这些属性来配置模块

{
  "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {}
          }
        },
        "systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-agent:1.4",
              "createOptions": "{}"
            }
          },
          "edgeHub": {
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-hub:1.4",
              "createOptions": "{}"
            }
          }
        },
        "modules": {
          "SimulatedTemperatureSensor": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
              "createOptions": "{}"
            }
          }
        }
      }
    },
    "$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "routes": {
            "route": "FROM /* INTO $upstream"
        },
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    },
    "SimulatedTemperatureSensor": {
      "properties.desired": {
           "SendData": true,
           "SendInterval": 10
      }
    }
  }
}

将 IoT Edge 部署到 VM

1.

IoT Edge 设备如何连接到 Azure IoT Central?

2.

IoT Edge 设备从何处下载模块?