使用 Visual Studio Code 大规模部署 IoT Edge 模块
适用于: IoT Edge 1.5 IoT Edge 1.4
重要
IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 是受支持的版本。 IoT Edge 1.4 LTS 的生命周期结束日期为 2024 年 11 月 12 日。 如果你使用的是较低的版本,请参阅更新 IoT Edge。
可以使用 Visual Studio Code 接口创建 IoT Edge 自动部署,以便同时管理多个设备的持续部署。 IoT Edge 的自动部署属于 IoT 中心的自动设备管理功能。 部署是可让你将多个模块部署到多个设备的动态过程。 还可以跟踪模块的状态和运行状况,并按需进行更改。
有关详细信息,请参阅了解单个设备或大规模的 IoT Edge 自动部署。
在本文中,你将设置 Visual Studio Code 和 IoT 扩展。 然后,了解如何将模块部署到一组 IoT Edge 设备。
先决条件
Azure 订阅中的 IoT 中心。
一个或多个 IoT Edge 设备。
如果未设置 IoT Edge 设备,可在 Azure 虚拟机中创建一个。 按照创建虚拟 Linux 设备或创建虚拟 Windows 设备快速入门文章(其中一篇)中的步骤进行操作。
适用于 Visual Studio Code 的 Azure IoT Edge。 适用于 Visual Studio Code 的 Azure IoT Edge 工具扩展处于维护模式。
登录以访问 IoT 中心
可以使用 Visual Studio Code 的 Azure IoT 扩展来执行与中心相关的操作。 为让操作顺利进行,需登录到 Azure 帐户并选择要使用的 IoT 中心。
在 Visual Studio Code 中打开“资源管理器”视图。
在资源管理器底部,展开“Azure IoT 中心”部分。
单击“Azure IoT 中心”部分标题中的“...” 。 如果没有看到省略号,请将鼠标悬停在标题处。
选择“选择 IoT 中心”。
如果尚未登录 Azure 帐户,请按照提示登录。
选择 Azure 订阅。
选择 IoT 中心。
配置部署清单
部署清单是一个 JSON 文档,用于描述要部署的模块。 它还描述了模块之间的数据流动方式,以及模块孪生的所需属性。 有关详细信息,请参阅了解如何在 IoT Edge 中部署模块和建立路由。
若要使用 Visual Studio Code 部署模块,请将部署清单本地保存为 .JSON 文件。 运行命令将配置应用到设备时,需要提供清单的位置。
下面是一个基本的部署清单示例,其中有一个模块:
注意
此示例部署清单使用 IoT Edge 代理和中心的架构版本 1.1。 架构版本 1.1 随 IoT Edge 版本 1.0.10 一起发布,支持模块启动顺序和路由优先级等功能。
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.1",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.5",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.5",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {
"upstream": "FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
如果需要确定当前可以配置哪些 IoT Edge 设备,请运行“IoT Edge:获取设备信息”命令。
使用目标条件标识设备
若要标识接收部署的 IoT Edge 设备,必须指定目标条件。 当 deviceId、标记值或报告属性值与指定的条件匹配时,将满足目标条件。
在设备孪生中配置标记。 下面是具有标记的设备孪生示例:
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
如果部署的目标条件包含与某个标记值匹配的表达式(例如 tag.location.building = '20'
),则此设备将接收部署。
若要以特定的设备为目标,而不管其标记或其他值为何,只需指定目标条件的 deviceId
。
下面提供了更多示例:
- deviceId ='linuxprod1'
- deviceId = 'linuxprod1' OR deviceId = 'linuxprod2' OR deviceId = 'linuxprod3'
- tags.environment ='prod'
- tags.environment = 'prod' AND tags.location = 'chinanorth2'
- tags.environment = 'prod' OR tags.location = 'chinanorth2'
- tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
有关详细信息,请参阅目标条件。 有关设备孪生和标记的详细信息,请参阅了解和使用 IoT 中心的设备孪生。
编辑设备孪生
可以在 Visual Studio Code 中编辑设备孪生,以配置标记。 在“视图”菜单中,选择“命令面板”并运行“IoT Edge: 编辑设备孪生”命令。 选择 IoT Edge 设备,随即会显示设备孪生。
此示例中未定义任何标记。 将当前的空节 "tags": {}
替换为自己的标记定义。
{
"deviceId": "myEdgeDevice",
"etag": "AAAAAAAAAAE=",
"deviceEtag": "NTgwMDg5MDAz",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "2019-12-29T00:58:49.9315265Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "2019-12-29T00:58:49.9315265Z"
},
"$version": 1
}
},
"capabilities": {
"iotEdge": true
},
"deviceScope": "ms-azure-iot-edge://myEdgeDevice-637131779299315265",
"tags": {}
}
保存本地文件后,运行“IoT Edge:更新设备孪生”命令。
大规模创建部署
配置部署清单并在设备孪生中配置标记后,便可以开始部署了。
在“视图”菜单中,选择“命令面板”并选择“Azure IoT Edge: 大规模创建部署”命令。
导航至要使用的部署清单 JSON 文件,然后单击“选择 Edge 部署清单”。
按提示提供值,从“部署 ID”开始。
指定以下参数的值:
参数 | 说明 |
---|---|
部署 ID | 将在 IoT 中心创建的部署的名称。 为部署提供唯一名称(最多包含 128 个小写字母)。 避免空格和以下无效字符:& ^ [ ] { } \ | " < > / 。 |
目标条件 | 输入目标条件,确定用作此部署的目标的设备。 该条件基于设备孪生标记或设备孪生报告的属性,应与表达式格式相匹配。 例如,tags.environment='test' and properties.reported.devicemodel='4000x' 。 |
优先级 | 正整数。 如果同一设备上确定的部署目标至少有两个,则会应用优先级数值最高的部署。 |
指定优先级后,终端应会显示类似于以下描述内容的输出:
[Edge] Start deployment with deployment id [{specified-value}] and target condition [{specified-value}]
[Edge] Deployment with deployment id [{specified-value}] succeeded.
监视和修改部署
使用 Azure 门户或 Azure CLI 来监视、修改和删除部署。 这两个工具都会提供有关部署的指标。
后续步骤
详细了解将模块部署到 IoT Edge 设备。