Руководство. Работа с Обновлением устройств для Центра Интернета вещей Azure: использование эталонного образа для Raspberry Pi 3 B+

Обновление устройств для Центра Интернета вещей Azure поддерживает обновления на основе образов, пакетов и скриптов.

Обновления на основе образов позволяют с большей вероятностью получить требуемое конечное состояние устройства. Как правило, проще реплицировать результаты обновления образа между подготовительной и рабочей средами, так как это не приводит к возникновению тех же проблем, что и при использовании пакетов и их зависимостей. Из-за их атомарной природы вы также можете легко внедрить модель отработки отказа A/B.

В этом руководстве описано, как выполнить комплексное обновление на основе образа с помощью Обновления устройств для Центра Интернета вещей на плате Raspberry Pi 3 B+.

Из этого руководства вы узнаете, как выполнять следующие задачи:

  • Скачивание образа.
  • Добавление тега к устройству Интернета вещей.
  • Импорт обновлений.
  • Разверните обновление образа.
  • Мониторинг развертывания обновления.

Примечание

Обновления образов в этом руководстве проверены на плате Raspberry Pi 3 B+.

Предварительные требования

Если вы еще это не сделали, создайте учетную запись и экземпляр Обновления устройств и настройте центр Интернета вещей. В этом руководстве требуется, чтобы устройство было подключено через Ethernet-подключение.

Скачайте файлы в разделе Активы на странице выпусков обновления устройств GitHub. В Tutorial_RaspberryPi.zip содержатся все необходимые файлы для работы с руководством.

Создание устройства в Центр Интернета вещей и получение строки подключения

Теперь добавьте устройство в Центр Интернета вещей. Строку подключения для устройства генерирует Центр Интернета вещей.

  1. На портал Azure перейдите в Центр Интернета вещей.

  2. В области слева щелкните Устройства. Затем щелкните Создать.

  3. В разделе Идентификатор устройстваукажите имя устройства. Убедитесь, что установлен флажок Автоматически создавать ключи.

  4. Щелкните Сохранить. На странице Устройства созданное вами устройство должно отобразиться в списке.

  5. Чтобы получить строку подключения устройства, перейдите в представление устройства и щелкните значок Копировать рядом с полем Основная строка подключения.

  6. Вставьте скопированные символы куда-нибудь для последующего использования, выполнив следующие действия.

    Скопированная строка и есть строка подключения устройства.

Примечание

В этом руководстве строка подключения устройства используется для проверки подлинности и подключения к Центр Интернета вещей для простоты настройки. В рабочих сценариях рекомендуется использовать удостоверение модуля и использовать AIS (Службу удостоверений Интернета вещей) для подготовки устройств. Подробнее

Настройка Raspberry Pi

Мы предоставляем базовый образ и файлы обновлений в разделе Ресурсы на странице выпусков обновления устройств GitHub. В Tutorial_RaspberryPi.zip содержатся все необходимые файлы для работы с руководством. WIC-файл — это базовый образ, который можно выполнить на плате Raspberry Pi 3 B+. Файл swUpdate(.swu), пользовательский скрипт swupdate и манифест — это файлы обновления, импортируемые с помощью обновления устройств для Центр Интернета вещей.

В этом базовом образе используется сборка Yocto (на основе выпуска 3.4.4) с:

  • SwUpdate, который включает обновление с двумя секциями с du
  • Агент Обновления устройств

Дополнительные сведения об используемых уровнях Yocto см. в разделе Обновление устройств Yocto GitHub..

Чтобы установить базовый образ обновления устройств (adu-base-image) на sd-карта, который будет использоваться на устройстве Raspberry Pi 3 B+, можно использовать предпочитаемое средство мигания ОС. Ниже приведены инструкции по использованию bmaptool для выполнения карта SD.

Использование bmaptool для записи образа на SD-карту

  1. Установите служебную программу bmaptool, если вы это еще не сделали.

    sudo apt-get install bmap-tools
    
  2. Укажите путь к SD-карте в /dev. Путь должен выглядеть примерно так: /dev/sd* или /dev/mmcblk*. Чтобы правильно указать путь, можно использовать служебную программу dmesg.

  3. Отключите все подключенные секции перед записью.

    sudo umount /dev/<device>
    
  4. Проверьте, есть ли у вас разрешения для записи данных на устройство.

    sudo chmod a+rw /dev/<device>
    
  5. (Необязательно.) Чтобы ускорить запись образа, скачайте файл bimap вместе с файлом образа и поместите его в тот же каталог.

  6. Запишите образ на SD-карту.

    sudo bmaptool copy <path to image> /dev/<device>
    

На программу “Обновление устройств для Центра Интернета вещей Azure” распространяются условия следующих лицензий:

Перед использованием агента ознакомьтесь с условиями лицензии. Установка и использование агента означают, что вы принимаете эти условия. Если вы не согласны с условиями лицензии, не используйте агент Обновления устройств для Центра Интернета вещей.

Настройка агента Обновления устройств на устройстве Raspberry Pi

  1. Убедитесь, что устройство Raspberry Pi 3 подключено к сети.

  2. Перейдите по протоколу SSH в Raspberry Pi 3 с помощью следующей команды в окне PowerShell:

      ssh raspberrypi3 -l root
    
  3. Файлы конфигурации DU (du-config.json и du-диагностика-config.json) должны находиться на устройстве, чтобы обновление устройства для Центр Интернета вещей правильно настраивалось.

    1. Создание или открытие файла для редактирования du-config.json с помощью:
      nano /adu/du-config.json
    
    1. После выполнения команды вы увидите открытый редактор с файлом. Если вы не создавали этот файл раньше, он будет пустым. Теперь скопируйте приведенное ниже содержимое файла du-config.json и замените конфигурации, необходимые для вашего устройства. Затем замените пример строки подключения строкой для устройства, которую вы создали на предыдущих шагах.

      du-config.json

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=example-connection-string.azure-devices.net;DeviceId=example-device;SharedAccessKey=M5oK/rOP12aB5678YMWv5vFWHFGJFwE8YU6u0uTnrmU=" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
    1. После внесения изменений выберите Ctrl+X , чтобы выйти из редактора. Затем введите y , чтобы сохранить изменения.
  4. Теперь вам нужно создать файл du-diagnostics-config.json с помощью аналогичных команд.

    1. Начните с создания или открытия файла du-diagnostics-config.json для редактирования:
      nano /adu/du-diagnostics-config.json
    
    1. Скопируйте содержимое du-диагностика-config.json, приведенное ниже, и замените все конфигурации, отличающиеся от стандартной сборки. В примере файла du-diagnostics-config.json представлены расположения журналов по умолчанию для Обновления устройств для Центра Интернета вещей. Эти значения по умолчанию необходимо изменить только в том случае, если реализация отличается.

    du-диагностика-config.json

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
    1. После внесения изменений выберите Ctrl+X , чтобы выйти из редактора. Затем введите y , чтобы сохранить изменения.
  5. Используйте следующую команду, чтобы отобразить файлы, расположенные в каталоге /adu/. Вы должны увидеть оба файла конфигурации files.du-diagnostics-config.json для редактирования:

      ls -la /adu/
    
  6. Перезапустите системную управляющую программу Обновления устройств, чтобы убедиться, что конфигурации были применены. Используйте следующую команду в окне терминала, выполнившего вход в raspberrypi.

      systemctl start deviceupdate-agent
    
  7. Убедитесь, что агент подключен:

      systemctl status deviceupdate-agent
    

    Состояние должно отображаться как активное и зеленое.

Подключение устройства в Обновлении устройств для Центра Интернета вещей

  1. В области слева щелкните Устройства.

  2. Выберите ссылку с именем устройства.

  3. В верхней части страницы выберите Двойник устройства.

  4. В разделе Передано свойств двойника устройства найдите версию ядра Linux.

    Для нового устройства, которое не получило обновления из Обновления устройств, значение DeviceManagement:DeviceInformation:1.swVersion представляет версию встроенного ПО, работающего на устройстве. После применения обновления к устройству средство обновления устройств использует значение свойства AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId для представления версии встроенного ПО, работающего на устройстве.

  5. Файлы базового образа и образа обновления имеют номер версии в имени файла.

     adu-<image type>-image-<machine>-<version number>.<extension>
    

    Используйте этот номер версии, как описано в следующем разделе "Импорт обновления".

Добавление тега группы "Обновление устройств" на устройство

  1. Найдите нужный Центр Интернета вещей на портале Azure.

  2. В области слева в разделе Устройства найдите свое устройство Интернета вещей и перейдите к двойнику устройства или двойнику модуля.

  3. В двойнике модуля агента Обновления устройств удалите все существующие значения тегов обновления устройства, присвоив им значение NULL. Если вы используете удостоверение устройства с агентом Обновления устройств, внесите эти изменения в двойник устройства.

  4. Добавьте новое значение тега Обновления устройств, как показано ниже.

        "tags": {
                "ADUGroup": "<CustomTagValue>"
                }
    

    Снимок экрана: двойник со сведениями о теге.

    На этом снимке экрана показан раздел, в который необходимо добавить тег в двойник.

Импорт обновления

  1. Скачайте пример манифеста руководства и пример обновления (SWU-файл) и пример A/B-скрипта из Tutorial_RaspberryPi.zip в разделе Ресурсы выпуска последней версии агента.

  2. Войдите на портал Azure и перейдите в свой центр Интернета вещей с Обновлением устройств. В области слева в разделе Автоматическое управление устройствами выберите Обновления.

  3. Откройте вкладку Обновления.

  4. Выберите + Импортировать новое обновление.

  5. Щелкните + Выбрать из контейнера хранилища. Выберите существующую учетную запись или создайте новую, щелкнув + Учетная запись хранения. Затем выберите существующий контейнер или создайте новый, щелкнув + Контейнер. Этот контейнер будет использоваться для размещения файлов обновления для импорта.

    Примечание

    Мы рекомендуем использовать новый контейнер каждый раз при импорте обновления, чтобы избежать случайного импорта файлов из предыдущих обновлений. Если вы не будете использовать новый контейнер, обязательно удалите все файлы из существующего контейнера, прежде чем завершить этот шаг.

    Снимок экрана: учетные записи хранения и контейнеры.

  6. В контейнере щелкните Отправка и перейдите к файлам, скачанным на шаге 1. Выбрав все файлы обновления, щелкните Отправить. Затем щелкните Выбрать, чтобы вернуться на страницу Импорт обновления.

    Снимок экрана: выбор отправленных файлов.

    На этом снимке экрана показан шаг импорта. Имена файлов могут не совпадать с именами, которые используются в примере.

  7. На странице Импорт обновления проверьте импортируемые файлы. Затем щелкните Импорт обновления, чтобы начать процесс импорта. В этом руководстве импортируйте пример манифеста руководства и пример обновления (SWU-файл) и пример A/B-скрипта, скачанный ранее.

    Снимок экрана: обновление импорта.

  8. Начнется процесс импорта, а на экране появится раздел Журнал импорта. Если столбец Состояние указывает на то, что импорт успешно выполнен, выберите заголовок Доступные обновления. Импортированное обновление должно появиться в списке.

    Снимок экрана: состояние задания.

Дополнительные сведения о процессе импорта см. в разделе Импорт обновления устройства.

Просмотр групп устройств

Обновление устройств использует группы для организации устройств. Обновление устройств автоматически сортирует устройства по группам на основе назначенных им тегов и свойств совместимости. Каждое устройство принадлежит только к одной группе, но группы могут иметь несколько подгрупп для сортировки различных классов устройств.

  1. Откройте вкладку Группы и развертывания в верхней части страницы.

    Снимок экрана: разгруппированные устройства.

  2. Просмотрите список групп и диаграмму соответствия обновлений. На схеме соответствия обновлений требованиям отображается количество устройств в разных состояниях соответствия: При последнем обновлении, Доступны новые обновления и Выполняющиеся обновления. Подробнее о соответствии обновлений.

    Снимок экрана: представление

  3. Вы увидите группу устройств, содержащую имитированное устройство, настроенное в этом руководстве, а также все доступные обновления для устройств в новой группе. Если есть устройства, которые не соответствуют требованиям к классу устройств в группе, они отобразятся в соответствующей группе недопустимых устройств. Чтобы развернуть наилучшее доступное обновление в новой определяемой пользователем группе из этого представления, выберите Развернуть рядом с группой.

Дополнительные сведения о тегах и группах см. в разделе Управление группами устройств.

Развертывание обновления

  1. После создания группы должно появиться новое обновление, доступное для вашей группы устройств. Ссылка на него будет отображаться в разделе Лучшее обновление. Возможно, потребуется выполнить обновление один раз.

    Дополнительные сведения о соответствии требованиям см. в разделе Соответствие обновлений устройств.

  2. Выберите целевую группу, указав ее имя. Откроются сведения о группе в разделе Основные сведения о группе.

    Снимок экрана: сведения о группе.

  3. Чтобы начать развертывание, перейдите на вкладку Текущее развертывание. Щелкните ссылку Развернуть рядом с нужным обновлением в разделе Доступные обновления. Наилучшее доступное обновление для указанной группы обозначается как Лучшее.

    Снимок экрана: выбор обновления.

  4. Запланируйте запуск развертывания немедленно или в будущем. Щелкните Создать.

    Совет

    По умолчанию дата и время запуска — это 24 часа начиная от текущего времени. Если вы хотите, чтобы развертывание началось раньше, выберите другие дату и время.

    Снимок экрана: создание развертывания.

  5. В разделе Сведения о развертывании для параметра Состояние задается значение Активно. Развернутое обновление помечается как (развертывается).

    Снимок экрана: развертывание в активном состоянии.

  6. Просмотрите схему соответствия, чтобы убедиться, что обновление выполняется.

  7. После успешного обновления устройства вы увидите, что диаграмма соответствия требованиям и сведения о развертывании обновлены, чтобы отразить то же самое.

    Снимок экрана: успешное обновление.

Слежение за развертыванием обновления

  1. Щелкните вкладку Журнал развертываний в верхней части страницы.

    Снимок экрана: журнал развертываний.

  2. Щелкните ссылку Сведения рядом с созданным развертыванием.

    Снимок экрана: сведения о развертывании.

  3. Щелкните Обновить, чтобы просмотреть последние данные о состоянии.

Вы успешно выполнили комплексное обновление на основе образа на устройстве Raspberry Pi 3 B+ с помощью Обновления устройств для Центра Интернета вещей.

Очистка ресурсов

Очистите учетную запись и экземпляр Обновления устройств, а также центр Интернета вещей и устройство Интернета вещей, если они больше не нужны.

Дальнейшие действия