该项目在IoT Azure中,我的上下文由边缘父节点和边缘子节点组成,因此我为存储在IoT Hub中的每个边缘设备/模块提供了一个设备/模块孪生JSON,其中包含设备/模块的属性。
我正在寻找一个管道解决方案来更新存储在edge device twin和module twin中的Git hub容器凭据:
注册表和运行时模块:
"$edgeAgent": {
"modules": {
"registry": {
"env": {
"REGISTRY_PROXY_REMOTEURL": {
"value": "https://ghcr.io"
},
"REGISTRY_PROXY_PASSWORD": {
"value": "xxxxx"
},
"REGISTRY_PROXY_USERNAME": {
"value": "xxxxx"
}
}
},
"runtime": {
"settings": {
"minDockerVersion": "v1.25",
"registryCredentials": {
"ghcr": {
"address": "ghcr.io",
"password": "xxxxx",
"username": "xxxxx"
}
}
},
"type": "docker"
}
}
}
我想使用azure tubeby pipeline来为父设备进行大规模的git凭据更新。
我可能的做法是:
1.使用命令CLI获取父设备列表
1.对于每个设备,该命令应该只替换注册表模块和运行时模块中的git凭据
1.使用更新的Github凭据部署每个父设备
是否可以通过自托管runner中的pipeline与IoT HUB之间的交互来实现?
1条答案
按热度按时间juzqafwq1#
没有现成的方法可以让你通过Azure CLI找到父边缘设备。有一个名为parentScopes的属性,它将成为子设备孪生的一部分,包含对父设备的引用。下面是属性在子设备孪生JSON中保留的值的示例。
您可以从
parentScopes
属性的值中添加和提取父设备名称。Parent 1是上面示例孪生中父设备的deviceId。获取父设备的一种更好的替代方法是向所有父设备添加一个标记,该标记可用于通过Azure CLI进行查询。请参阅下图,了解如何通过Azure门户添加此内容的详细信息。
您还可以使用以下命令
az iot hub device-twin update -n <iothubname> -d <device id> --tags '{"isParent":true}'
通过CLI向Iot Edge设备添加标记。创建标记后,您可以使用Azure CLI查询过滤父设备,如下所示。
上述查询返回父设备的deviceId。您可以通过CLI利用az iot edge set-modules或az iot edge deployment create命令来更新模块孪生的设置。
如果您对其他方法持开放态度,则可以将父设备Id传递给IoT Edge Automatic Deployments。创建一个模块孪生部署并使用如下所示的目标条件
在模块孪生设置部分,您可以使用类似于下面的方法更新模块的环境属性
此方法可更好地监控部署状态、目标设备总数以及已成功应用部署的设备。
希望这对你有帮助。