Руководство по обновлению устройств Azure для Центр Интернета вещей с помощью образа Raspberry Pi
Обновление устройств для Центра Интернета вещей Azure поддерживает обновления на основе образов, пакетов и скриптов. В этом руководстве показано комплексное обновление устройства на основе образа для Центр Интернета вещей обновления с помощью образа Yocto на доске Raspberry Pi 3 B+.
Обновления изображений обеспечивают высокий уровень уверенности в конечном состоянии устройства и не представляют одни и те же проблемы, связанные с пакетом и управлением зависимостями, как обновления на основе пакетов или скриптов. Реплицировать результаты обновления образа между предварительной и рабочей средой проще или легко внедрить модель отработки отказа A/B.
Изучив это руководство, вы:
- Скачайте и установите обновление образа.
- Назначьте тег устройству Интернета вещей.
- Импортируйте обновление образа.
- Разверните обновление образа.
- Просмотр журнала развертывания обновлений.
Необходимые компоненты
Учетная запись обновления устройств и экземпляр, настроенные с помощью Центра Интернета вещей.
Доска Raspberry Pi 3 IoT, подключенная через Ethernet к оборудованию, которая может скачать и извлечь файлы изображений и управлять устройством.
Примечание.
Обновления изображений в этом руководстве были проверены на доске Raspberry Pi B3.
Регистрация устройства и получение строка подключения
Добавьте устройство в реестр устройств в Центре Интернета вещей и получите строка подключения Центр Интернета вещей генерирует устройство.
- В портал Azure откройте страницу Центра Интернета вещей, связанную с экземпляром обновления устройств.
- В области навигации слева выберите устройства управления устройствами>.
- На странице "Устройства" выберите "Добавить устройство".
- В разделе Идентификатор устройстваукажите имя устройства. Убедитесь, что установлен флажок "Автогенерировать ключи ".
- Выберите Сохранить. Устройство отображается в списке на странице "Устройства ".
- На странице "Устройства" выберите зарегистрированное устройство.
- На странице устройства щелкните значок копирования рядом со строкой подключения (первичный ключ). Сохраните это устройство строка подключения, чтобы использовать при настройке агента обновления устройств.
Примечание.
В демонстрационных целях в этом руководстве используется строка подключения устройства для проверки подлинности и подключения к Центру Интернета вещей. Для рабочих сценариев лучше использовать удостоверение модуля и службу удостоверений Интернета вещей для подготовки устройств. Дополнительные сведения см. в разделе "Подготовка агента обновления устройств".
Настройка Raspberry Pi
Файл Tutorial_RaspberryPi3.zip содержит все необходимые файлы для руководства. Скачайте файл из раздела "Активы " последнего выпуска на странице выпусков обновления устройств GitHub и распакуйте его.
В извлеченной папке Tutorial_RaspberryPi3 базовый образ, который можно запустить на доске Raspberry Pi, является adu-base-image-raspberrypi3.wic. Базовый образ использует сборку Yocto на основе выпуска 3.4.4. На изображении есть агент обновления устройств и SWUpdate, который включает обновление двойного раздела обновления устройства. Дополнительные сведения о уровнях Yocto см. в статье Создание пользовательской системы под управлением Linux с помощью агента обновления устройств с помощью проекта Yocto.
Файлы обновления, импортируемые с помощью обновления устройств, являются следующими:
- ФАЙЛ SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
- Настраиваемый скрипт SWUpdate example-a-b-update.sh
- EDS-ADUClient.yocto-update.1.2.0.importmanifest.json манифеста
Использование bmaptool для записи образа на SD-карту
Внимание
Обновление устройств Azure для Центр Интернета вещей программного обеспечения распространяется на следующие условия лицензии:
- Лицензия на Обновление устройств для Центра Интернета вещей
- Клиентская лицензия на оптимизацию доставки
Прочитайте условия лицензии перед использованием агента. Установка и использование агента представляют собой принятие этих условий. Если вы не согласны с условиями лицензии, не используйте агент обновления устройств.
Используйте средство мигания ОС, чтобы установить базовый образ обновления устройства на SD-карте, используемой на устройстве Raspberry Pi. Приведенные ниже инструкции используются bmaptool
для вспышки на SD-карте. Замените <device>
заполнитель именем устройства и <path to image>
заполнителем путь к скачанного файла образа.
Установите служебную
bmap-tools
программу, если у вас ее нет.sudo apt-get install bmap-tools
Найдите путь sd-карты в /dev. Путь должен выглядеть примерно так: /dev/sd* или /dev/mmcblk*. Чтобы правильно указать путь, можно использовать служебную программу
dmesg
.Отключите все подключенные секции перед записью.
sudo umount /dev/<device>
Проверьте, есть ли у вас разрешения для записи данных на устройство.
sudo chmod a+rw /dev/<device>
Запишите образ на SD-карту.
sudo bmaptool copy <path to image> /dev/<device>
Совет
Чтобы ускорить мигание, можно скачать файл бикарты и файл изображения и поместить их в один каталог.
Настройка агента Обновления устройств на устройстве Raspberry Pi
Убедитесь, что Raspberry Pi подключен к сети.
Безопасная оболочка (SSH) в Raspberry Pi с помощью следующей команды в окне PowerShell:
ssh raspberrypi3 -l root
Создание файлов конфигурации обновления устройства
Файлы конфигурации обновления устройств du-config.json и файлы конфигурации du-диагностика-config.json должны находиться на устройстве. Чтобы создать файлы, выполните следующие команды в терминале, вошедшего в Raspberry Pi.
Чтобы создать файл du-config.json или открыть его для редактирования, выполните следующую команду:
nano /adu/du-config.json
Редактор открывает файл du-config.json . Если вы создаете файл, он пуст. Скопируйте и вставьте следующий код в файл, заменив примеры значений любыми необходимыми конфигурациями для устройства. Замените строку примера
connectionData
на устройство строка подключения, скопированное на шаге регистрации устройства.{ "schemaVersion": "1.0", "aduShellTrustedUsers": [ "adu", "do" ], "manufacturer": "contoso", "model": "virtual-vacuum-v2", "agents": [ { "name": "main", "runas": "adu", "connectionSource": { "connectionType": "string", "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" }, "manufacturer": "contoso", "model": "virtual-vacuum-v2" } ] }
Нажмите клавиши CTRL+X, чтобы выйти из редактора, и введите y, чтобы сохранить изменения.
Создайте файл du-диагностика-config.json с помощью аналогичных команд. Создайте и откройте файл:
nano /adu/du-diagnostics-config.json
Скопируйте и вставьте следующий код du-диагностика-config.json в файл. Значения — это расположения журналов обновления устройств по умолчанию, и их необходимо изменить только в том случае, если конфигурация отличается от используемой по умолчанию.
{ "logComponents":[ { "componentName":"adu", "logPath":"/adu/logs/" }, { "componentName":"do", "logPath":"/var/log/deliveryoptimization-agent/" } ], "maxKilobytesToUploadPerLogPath":50 }
Нажмите клавиши CTRL+X, чтобы выйти из редактора, и введите y, чтобы сохранить изменения.
Используйте следующую команду, чтобы отобразить файлы, расположенные в каталоге /adu/ . В обоих файлах конфигурации должны отображаться оба файла конфигурации.
ls -la /adu/
Используйте следующую команду, чтобы перезапустить управляющая программа обновления устройства и убедиться, что применяются конфигурации.
systemctl start deviceupdate-agent
Убедитесь, что агент работает, выполнив следующую команду:
systemctl status deviceupdate-agent
Состояние должно отображаться как живое и зеленое.
Подключение к устройству в Центр Интернета вещей и добавление тега группы
На странице центра Интернета вещей портал Azure для экземпляра обновления устройств выберите устройства управления устройствами> в области навигации слева.
На странице "Устройства" выберите имя устройства.
В верхней части страницы устройства выберите двойник устройства.
На странице
"reported"
двойника устройства в разделе двойника"properties"
устройства найдите версию ядра Linux для устройства.Для нового устройства, которое не получило обновления из обновления устройства, значение свойства DeviceManagement:DeviceInformation:1.swVersion представляет версию встроенного ПО, запущенную на устройстве. После применения обновления для устройства значение свойства AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId представляет версию встроенного ПО.
Базовые и обновленные имена файлов изображений имеют номер версии adu-image-image-image-machine-version<.<><><>расширение>. Обратите внимание на номера версий, используемые при импорте обновления.
Добавление тега группы
Обновление устройства автоматически упорядочивает устройства в группы на основе назначенных тегов и свойств совместимости. Каждое устройство может принадлежать только одной группе, но группы могут иметь несколько подгрупп для сортировки различных классов устройств. Дополнительные сведения о тегах и группах см. в разделе "Управление группами устройств".
В двойнике устройства удалите все существующие значения тегов обновления устройства, задав их значение NULL, а затем добавьте следующий новый тег группы обновления устройства. Если вы используете удостоверение модуля с агентом обновления устройства, добавьте тег в двойник удостоверения модуля вместо двойника устройства.
"tags": { "ADUGroup": "<CustomTagValue>" },
На следующем снимке экрана показано, где в файле для добавления тега.
Выберите Сохранить.
Импорт обновления
На странице центра Интернета вещей портал Azure для экземпляра обновления устройств выберите Управление устройствами> Updates в области навигации слева.
На странице "Обновления" выберите "Импорт нового обновления".
На странице "Импорт обновления" выберите "Выбрать из контейнера хранилища".
На странице учетных записей хранения выберите существующую учетную запись хранения или создайте новую учетную запись, выбрав учетную запись хранения.
На странице "Контейнеры" выберите существующий контейнер или создайте новый контейнер, выбрав контейнер. Контейнер используется для этапов обновления файлов для импорта.
Совет
Чтобы избежать случайного импорта файлов из предыдущих обновлений, используйте новый контейнер при каждом импорте обновления. Если вы не используете новый контейнер, удалите все файлы из существующего контейнера.
На странице контейнера нажмите кнопку "Отправить". Перетащите и удалите или выберите следующие файлы обновления из скачаемой папки Tutorial_RaspberryPi3 :
- adu-update-image-raspberrypi3-1.2.0.swu
- example-a-b-update.sh
- EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
Выберите Отправить. После отправки файлы отображаются на странице контейнера.
На странице контейнера просмотрите и выберите файлы для импорта, а затем нажмите кнопку "Выбрать".
На экране "Импорт обновления" выберите "Импортировать обновление".
Начинается процесс импорта, а экран переключается на экран "Обновления ". После успешного выполнения импорта на вкладке "Обновления ". Дополнительные сведения о процессе импорта см. в разделе "Импорт обновления устройства".
Выберите группу устройств
Вы можете использовать тег группы, примененный к устройству, для развертывания обновления в группе устройств. Перейдите на вкладку "Группы и развертывания" в верхней части страницы "Обновления", чтобы просмотреть список групп и развертываний и диаграмму соответствия обновления.
На схеме соответствия обновлений требованиям отображается количество устройств в разных состояниях соответствия: При последнем обновлении, Доступны новые обновления и Выполняющиеся обновления. Дополнительные сведения см. в разделе "Соответствие обновлению устройств".
В разделе "Имя группы" отображается список всех групп устройств, подключенных к этому центру Интернета вещей, с ссылками на развертывание обновлений в разделе "Состояние". Все устройства, которые не соответствуют требованиям класса устройства группы, отображаются в соответствующей недопустимой группе. Дополнительные сведения о тегах и группах см. в разделе "Управление группами устройств".
Вы увидите группу устройств, содержащую устройство, настроенное в этом руководстве, вместе с доступными обновлениями для устройств в группе. Может потребоваться обновить содержимое страницы. Чтобы развернуть лучшее доступное обновление в группе из этого представления, выберите " Развернуть рядом с группой".
Развертывание обновления
На странице сведений о группе выберите вкладку "Текущее развертывание", а затем выберите "Развернуть рядом с нужным обновлением" в разделе "Доступные обновления". Лучшее доступное обновление для группы обозначается лучшим выделением.
На странице "Создание развертывания" запланируйте развертывание немедленно или в будущем, а затем нажмите кнопку "Создать".
Совет
По умолчанию дата и время запуска — это 24 часа начиная от текущего времени. Не забудьте выбрать другую дату и время, если вы хотите, чтобы развертывание началось раньше.
В разделе Сведения о развертывании для параметра Состояние задается значение Активно. В разделе "Доступные обновления" выбранное обновление помечается ( развертывание).
На странице "Обновления" просмотрите диаграмму соответствия требованиям, чтобы увидеть, что обновление выполняется. После успешного обновления устройства диаграмма соответствия требованиям и сведения о развертывании обновляются, чтобы отразить это состояние.
Просмотр журнала развертывания обновлений
Чтобы просмотреть журнал развертывания, выполните приведенные действия.
Выберите вкладку "Журнал развертывания" в верхней части страницы сведений о группе и выберите ссылку сведений рядом с созданным развертыванием.
На странице сведений о развертывании выберите "Обновить", чтобы просмотреть последние сведения о состоянии.
Очистка ресурсов
Если вам больше не нужны ресурсы, созданные для этого руководства, их можно удалить.
- В портал Azure перейдите к группе ресурсов, содержащей ресурсы.
- Если вы хотите удалить все ресурсы в группе, выберите "Удалить группу ресурсов".
- Если вы хотите удалить только некоторые из ресурсов, установите флажки, чтобы выбрать ресурсы, а затем нажмите кнопку "Удалить".
Следующие шаги
- Обновление устройства для Центр Интернета вещей с помощью агента симулятора
- Обновление устройства для Центр Интернета вещей с помощью агента пакета