Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
IoT Edge 1.5
Внимание
IoT Edge 1.5 LTS является поддерживаемым выпуском. IoT Edge 1.4 LTS заканчивается жизнью с 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.
Используйте Azure CLI для создания автоматического развертывания Azure IoT Edge и управления развертываниями для нескольких устройств одновременно. Автоматическое развертывание для IoT Edge является частью функции управления устройствами Центр Интернета вещей Azure. Развертывания позволяют развертывать несколько модулей на нескольких устройствах, отслеживать состояние и работоспособность модулей и вносить изменения при необходимости.
В этой статье описана настройка Azure CLI и расширения Интернета вещей. Затем вы развертываете модули в наборе устройств IoT Edge и отслеживаете ход выполнения с помощью команд CLI.
Необходимые компоненты
Центр Интернета вещей в подписке Azure.
Одно или несколько устройств IoT Edge.
Если устройство IoT Edge не настроено, его можно создать на виртуальной машине Azure. Выполните действия, описанные в одной из следующих статей краткого руководства: создание виртуального устройства Linux или создание виртуального устройства Windows.
Azure CLI в вашей среде. Версия Azure CLI должна быть 2.0.70 или более поздней. Используется
az --versionдля проверки. Эта версия поддерживает команды расширения az и представляет собой платформу команд Knack.
Настройка манифеста развертывания
Манифест развертывания — это документ JSON, описывающий, какие модули следует развертывать, как потоки данных между модулями и требуемые свойства двойников модулей. Подробную информацию см. в статье Сведения о развертывании модулей и настройке маршрутов в IoT Edge.
Чтобы развернуть модули с помощью Azure CLI, сохраните манифест развертывания локально в виде файла .txt. При выполнении команды вы будете использовать путь к файлу в следующем разделе, чтобы применить конфигурацию к устройству.
Ниже приведен базовый манифест развертывания с одним модулем в качестве примера.
{
"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
}
}
}
}
}
Примечание.
Этот пример манифеста развертывания использует схему версии 1.1 для агента IoT Edge и центра. Схема версии 1.1 выпущена вместе с IoT Edge версии 1.0.10. Он позволяет использовать такие функции, как порядок запуска модуля и определение приоритетов маршрутов.
Многоуровневое развертывание
Многоуровневые развертывания — это тип автоматического развертывания, который можно накладывать друг на друга. Дополнительную информацию о многоуровневых развертываниях см. в статье Общие сведения об автоматических развертываниях IoT Edge для отдельных устройств или в большом масштабе.
Вы можете создавать многоуровневые развертывания и управлять ими с помощью Azure CLI, таких как любое автоматическое развертывание, с несколькими различиями. После создания многоуровневого развертывания Azure CLI работает для многоуровневых развертываний так же, как и для любого развертывания. Чтобы создать многоуровневое развертывание, добавьте флаг --layered в команду создания.
Второе различие заключается в том, как вы создаете манифест развертывания. Стандартные автоматические развертывания должны включать модули среды выполнения системы и любые пользовательские модули. Многоуровневые развертывания могут включать только пользовательские модули. Многоуровневые развертывания также требуют стандартного автоматического развертывания на устройстве для предоставления необходимых компонентов каждого устройства IoT Edge, таких как модули среды выполнения системы.
Ниже приведен базовый манифест многоуровневого развертывания с одним модулем в качестве примера.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.SimulatedTemperatureSensor": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.5"
}
},
"$edgeHub": {
"properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Примечание.
Этот многоуровневый манифест развертывания немного отличается от стандартного манифеста развертывания. Требуемые свойства модулей среды выполнения свернуты и используют нотацию точек. Это форматирование требуется для портал Azure для распознавания многоуровневого развертывания. Например:
properties.desired.modules.<module_name>properties.desired.routes.<route_name>
В предыдущем примере показан параметр многоуровневого развертывания properties.desired для модуля. Если это многоуровневое развертывание предназначено для устройства, где уже применяется тот же модуль, он перезаписывает все существующие требуемые свойства. Чтобы обновить нужные свойства вместо перезаписи, определите новый подраздел. Например:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"SendData": true,
"SendInterval": 5
}
}
Вы также можете выразить то же самое с помощью следующего синтаксиса:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties.SendData" : true,
"properties.desired.layeredProperties.SendInterval": 5
}
Примечание.
В настоящее время все многоуровневые развертывания должны включать объект edgeAgent, чтобы быть валидными. Даже если многоуровневое развертывание обновляет только свойства модуля, включите пустой объект. Например: "$edgeAgent":{}. Многоуровневое развертывание с пустым edgeAgent объектом отображается как направленное в edgeAgent двойнике модуля, а не как применённое.
Чтобы создать многоуровневое развертывание, выполните приведенные действия.
- Добавьте флаг в
--layeredкоманду создания Azure CLI. - Не включать системные модули.
- Используйте полную нотацию точек под
$edgeAgentи$edgeHub.
Дополнительные сведения о настройке двойников модулей в многоуровневых развертываниях см. в разделе "Многоуровневые развертывания".
Определение устройств с помощью тегов
Перед созданием развертывания необходимо указать, на какие устройства вы хотите воздействовать. Azure IoT Edge определяет устройства с помощью тегов в двойнике устройства.
Каждое устройство может иметь несколько тегов, которые вы определяете по своему усмотрению с учетом особенностей решения. Например, если вы управляете кампусом смарт-зданий, можно добавить на устройство следующие теги:
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
Дополнительные сведения о двойниках устройств и тегах см. в статье Общие сведения о двойниках устройств и их использование в Центре Интернета вещей.
Создание развертывания
Разверните модули на целевых устройствах, создав развертывание с манифестом развертывания и другими параметрами.
Выполните команду az iot edge deployment create , чтобы создать развертывание:
az iot edge deployment create --deployment-id <deployment-id> --hub-name <hub-name> --content <file-path> --labels "<labels>" --target-condition "<target-query>" --priority <priority>
--layered Добавьте флаг для создания многоуровневого развертывания.
Команда az iot edge deployment create использует следующие параметры:
- --layered: необязательный флаг, определяющий развертывание как многоуровневое развертывание.
-
--deployment-id: имя развертывания, созданного в Центре Интернета вещей. Используйте уникальное имя до 128 строчных букв. Избегайте пробелов и этих недопустимых символов:
& ^ [ ] { } \ | " < > /Этот параметр является обязательным. - --content: Путь к файлу JSON манифеста развертывания. Этот параметр является обязательным.
-
--hub-name: имя центра Интернета вещей, в котором создается развертывание. Центр должен быть в текущей подписке. Измените текущую подписку, выполнив команду
az account set -s <subscription-name>. -
--labels: пары имен и значений, которые описывают и помогают отслеживать развертывания. Метки используют форматирование JSON для имен и значений. Например:
{"HostPlatform":"Linux", "Version":"3.0.1"}. -
--target-condition: условие, определяющее, какие устройства предназначены для этого развертывания. Условие основано на тегах двойника устройства или сообщаемых свойствах двойника устройства, и оно должно соответствовать формату выражения. Например:
tags.environment='test' and properties.reported.devicemodel='4000x'. Если вы не укажете целевое условие, развертывание не будет применяться ни к каким устройствам. - --priority: положительное целое число. Если два или более развертываний предназначены для одного устройства, развертывание с наивысшим приоритетом применяется.
-
--метрики: метрики, которые запрашивают
edgeHubсообщаемые свойства для отслеживания состояния развертывания. Метрики используют входные данные JSON или путь к файлу. Например:'{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.
Сведения о мониторинге развертывания с помощью Azure CLI см. в статье "Мониторинг развертываний IoT Edge".
Примечание.
При создании нового развертывания IoT Edge может потребоваться до 5 минут для обработки новой конфигурации Центра Интернета вещей и отправки новых нужных свойств целевым устройствам.
Изменение развертывания
При изменении развертывания изменения немедленно реплицируются на все целевые устройства.
При обновлении целевого условия происходят следующие изменения:
- Если устройство не соответствовало старому целевому условию, но соответствует новому целевому условию, и это развертывание является самым высоким приоритетом для этого устройства, это развертывание применяется к устройству.
- Если устройство, запущенное в настоящее время, больше не соответствует целевому условию, оно удаляет это развертывание и принимает следующее развертывание с наивысшим приоритетом .
- Если устройство, работающее в настоящее время под управлением этого развертывания, больше не соответствует целевому условию и не соответствует целевому условию любого другого развертывания, на устройстве не происходит никаких изменений. Устройство продолжает работать с текущими модулями в текущем состоянии, но не управляется в рамках этого развертывания. Как только устройство соответствует целевым условиям другого развертывания, оно удаляет текущее развертывание и переходит на новое.
Содержимое развертывания невозможно обновить, включая модули и маршруты, определенные в манифесте развертывания. Чтобы обновить содержимое развертывания, создайте новое развертывание, которое предназначено для одних и того же устройств с более высоким приоритетом. Вы можете изменить некоторые свойства существующего модуля, например целевое условие, метки, метрики и приоритет.
Чтобы обновить развертывание, используйте команду az iot edge deployment update.
az iot edge deployment update --deployment-id <deployment-id> --hub-name <hub-name> --set <property1.property2='value'>
Команда обновления развертывания использует следующие параметры:
- --deployment-id: имя развертывания в концентраторе интернета вещей.
-
--hub-name: имя Центра Интернета вещей, в котором существует развертывание. Центр должен быть в текущей подписке. Чтобы переключиться на другую подписку, выполните команду
az account set -s <subscription-name>. -
--set: изменить свойство в развертывании. Вы можете изменить следующие свойства:
-
targetCondition(например,targetCondition=tags.location.state='Oregon') labelspriority
-
- --add: Добавляет новое свойство к развертыванию, включая целевые условия или метки.
- --remove: удалите существующее свойство, включая целевые условия или метки.
Удаление развертывания
Когда вы удаляете развертывание, устройства используют следующее по приоритету развертывание. Если устройства не соответствуют целевому условию другого развертывания, модули не удаляются при удалении развертывания.
Выполните команду az iot edge deployment delete, чтобы удалить развертывание.
az iot edge deployment delete --deployment-id <deployment-id> --hub-name <hub-name>
Команда deployment delete использует следующие параметры:
- --deployment-id. Имя развертывания, существующего в Центре Интернета вещей.
-
--hub-name. Имя Центра Интернета вещей, в котором существует развертывание. Центр должен быть в текущей подписке. Переключитесь на нужную подписку с помощью команды
az account set -s [subscription name].
Следующие шаги
Дополнительные сведения о развертывании модулей на устройствах IoT Edge.