Поделиться через


Краткое руководство. Развертывание первого модуля IoT Edge на виртуальном устройстве Linux

Область применения: Флажок IoT Edge 1.5 IoT Edge 1.5 Флажок IoT Edge 1.4 IoT Edge 1.4

Внимание

Поддерживаются выпуски IoT Edge 1.5 LTS и IoT Edge 1.4 LTS. IoT Edge 1.4 LTS заканчивается жизнью 12 ноября 2024 года. Если вы используете более ранний выпуск, см. статью Обновление IoT Edge.

Проверьте работу Azure IoT Edge, как описано в этом кратком руководстве, развернув контейнерный код на виртуальном устройстве IoT Edge (Linux). IoT Edge позволяет удаленно управлять кодом на устройствах, чтобы вы могли передавать больше рабочих нагрузок на пограничные устройства. При работе с этим кратким руководством мы рекомендуем использовать виртуальную машину Azure для устройства IoT Edge. Так вы сможете быстро создать виртуальную машину для тестирования, а затем удалить ее по завершении работы.

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

  • Создайте Центр Интернета вещей.
  • Регистрация устройства IoT Edge в Центре Интернета вещей.
  • Установка и запуск среды выполнения IoT Edge на виртуальном устройстве.
  • Удаленное развертывание модуля на устройстве IoT Edge.

Схема архитектуры быстрого запуска для устройств и облака.

В этом кратком руководстве описано, как создать виртуальную машину Linux, используемую как устройство IoT Edge. Затем вы развернете модуль на портале Azure для устройства. Модуль, который вы развернете с помощью этого краткого руководства, — это имитированный датчик, генерирующий данные температуры, влажности и давления. В других руководствах по Azure IoT Edge используются наработки из этой статьи: дополнительные развернутые модули, которые анализируют генерируемые данные для бизнес-аналитики.

Если у вас нет активной подписки Azure, перед началом работы создайте бесплатную учетную запись.

Необходимые компоненты

Подготовьте среду к работе с Azure CLI.

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

Облачные ресурсы.

  • Группа ресурсов для управления всеми ресурсами, которые вы используете в этом кратком руководстве. В этом кратком руководстве и последующих руководствах мы используем пример имени группы ресурсов IoTEdgeResources.

    az group create --name IoTEdgeResources --location westus2
    

Создание Центра Интернета вещей

Начните с создания Центра Интернета вещей с помощью Azure CLI.

Схема создания центра Интернета вещей в облаке.

Для целей этого руководства можно использовать бесплатный уровень. Если у вас уже есть центр Интернета вещей, который вы использовали ранее, вы можете продолжить работу с ним.

При помощи следующего кода создается бесплатный центр F1 в группе ресурсов IoTEdgeResources. Замените {hub_name} уникальным именем центра Интернета вещей. Создание Центра Интернета вещей может занять несколько минут.

az iot hub create --resource-group IoTEdgeResources --name {hub_name} --sku F1 --partition-count 2

Если отобразится сообщение об ошибке с уведомлением о том, что в вашей подписке уже имеется один бесплатный центр, измените номер SKU на S1. В подписке может быть только один бесплатный Центр Интернета вещей. Если отобразится сообщение об ошибке с уведомлением о том, что имя недоступно, значит кто-то уже создал Центр Интернета вещей с таким именем. Выберите другое имя.

Регистрация устройства IoT Edge

Зарегистрируйте устройство IoT Edge в только что созданном Центре Интернета вещей.

Схема регистрации устройства с помощью удостоверения Центр Интернета вещей.

Создайте удостоверение для своего имитированного устройства IoT Edge, чтобы оно могло обмениваться данными с Центром Интернета вещей. Удостоверение устройства находится в облаке. Чтобы связать физическое устройство с удостоверением, нужно использовать уникальную строку подключения к устройству.

Так как поведение и управление устройств IoT Edge и обычных устройств Интернета вещей отличаются, укажите в удостоверении, что это устройство IoT Edge, с помощью флага --edge-enabled.

  1. Чтобы создать устройство с именем myEdgeDevice в своем центре, введите следующую команду в Azure Cloud Shell.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name {hub_name}
    

    Если вы получите сообщение об ошибке ключей политики iothubowner, убедитесь, что Cloud Shell выполняет последнюю версию расширения azure-iot .

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

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name {hub_name}
    

    Например, строка подключения должны выглядеть примерно такHostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE_SHARED_ACCESS_KEY>.

Настройка устройства IoT Edge

Создайте виртуальную машину со средой выполнения Azure IoT Edge.

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

Среда выполнения IoT Edge развертывается на всех устройствах IoT Edge. Она состоит из трех компонентов. Управляющая программа безопасности IoT Edge запускается при каждой загрузке устройства Edge, перезагружая его путем запуска агента IoT Edge. Агент IoT Edge упрощает развертывание и мониторинг модулей на устройстве IoT Edge, включая центр IoT Edge. Центр IoT Edge управляет взаимодействием между модулями на устройстве IoT Edge, а также между устройством и Центром Интернета вещей.

Укажите строку подключения к устройству во время конфигурации среды выполнения. Это строка, полученная с помощью Azure CLI. Эта строка свяжет ваше физическое устройство с удостоверением устройства IoT Edge в Azure.

Развертывание устройства IoT Edge

В этом разделе используется шаблон Azure Resource Manager для создания виртуальной машины и установки на ней среды выполнения IoT Edge. Если вы хотите использовать собственное устройство Linux, выполните инструкции по установке из этой статьи и продолжите работу с этим руководством.

Используйте кнопку "Развернуть в Azure " или команды CLI для создания устройства IoT Edge на основе предварительно созданного шаблона iotedge-vm-deploy .

  • Развертывание с помощью шаблона Azure Resource Manager Для IoT Edge.

    Развернуть в Azure

  • Пользователям Bash и Cloud Shell нужно скопировать следующую команду в текстовый редактор, а затем заменить текст заполнителя своими данными и скопировать его в окно Bash или Cloud Shell:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • Пользователям PowerShell нужно скопировать следующую команду в окно PowerShell, а затем заменить текст заполнителя своими данными:

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

Этот шаблон принимает следующие параметры:

Параметр Описание
resource-group Группа ресурсов, в которой будут созданы ресурсы. Используйте имя по умолчанию IoTEdgeResources, которое применяется в этой статье, или укажите имя существующей группы ресурсов в подписке.
template-uri Указатель на используемый шаблон Resource Manager.
dnsLabelPrefix Строка, которая будет использоваться для создания имени узла виртуальной машины. Замените заполнитель именем вашей виртуальной машины.
adminUsername Имя пользователя для учетной записи администратора виртуальной машины. Используйте пример azureUser или укажите новое имя пользователя.
deviceConnectionString Строка подключения из удостоверения устройства в Центре Интернета вещей, которая используется для настройки среды выполнения IoT Edge на виртуальной машине. Команда CLI в этом параметре извлекает строку подключения. Замените текст заполнителя именем центра Интернета вещей.
authenticationType Метод аутентификации для учетной записи администратора. В этом кратком руководстве используется аутентификация на основе пароля, но для этого параметра также можно задать значение sshPublicKey.
adminPasswordOrKey Пароль или значение ключа SSH для учетной записи администратора. Замените текст заполнителя надежным паролем. Пароль должен содержать не менее 12 символов и содержать три из четырех типов следующих символов: строчные буквы, прописные буквы, цифры и специальные символы.

По завершении развертывания вы должны получить в CLI выходные данные в формате JSON, которые содержат сведения SSH для подключения к виртуальной машине. Скопируйте значение общедоступной записи SSH раздела выходных данных. Например, команда SSH должна выглядеть примерно так ssh azureUser@edge-vm.westus2.cloudapp.azure.com:

Просмотр состояния среды выполнения IoT Edge

Остальная часть команд из этого краткого руководства выполняется на вашем устройстве IoT Edge, таким образом, вы можете увидеть происходящее на устройстве. Если вы используете виртуальную машину, подключитесь к ней, используя настроенное имя пользователя администратора и DNS-имя, возвращенное командой развертывания. DNS-имя можно также узнать на странице общих сведений о виртуальной машине на портале Azure. Подключитесь к виртуальной машине, используя приведенную ниже команду. Замените {admin username} и {DNS name} собственными значениями.

ssh {admin username}@{DNS name}

Подключившись к виртуальной машине, убедитесь, что среда выполнения установлена и настроена на устройстве IoT Edge.

  1. Убедитесь, что служба IoT Edge запущена. Следующая команда должна вернуть состояние ОК, если IoT Edge выполняется, или предоставить ошибки службы.

    sudo iotedge system status
    

    Совет

    Для запуска команд iotedge требуется более высокий уровень привилегий. После установки среды выполнения IoT Edge, выхода из компьютера и обратного входа ваши разрешения обновляются автоматически. До этого момента используйте перед командой префикс sudo.

  2. Если нужно устранить неполадки со службой, извлеките журналы службы.

    sudo iotedge system logs
    
  3. Просмотрите данные обо всех модулях, запущенных на устройстве IoT Edge. Так как служба запущена первый раз, отобразится только запущенный модуль edgeAgent. Модуль edgeAgent запускается по умолчанию и позволяет установить и запустить любые дополнительные модули, развертываемые на устройстве.

    sudo iotedge list
    

Теперь устройство IoT Edge настроено. Оно готово для запуска модулей, развернутых в облаке.

Развертывание модуля

Управляя устройством Azure IoT Edge из облака, разверните модуль, который будет передавать данные телеметрии в Центр Интернета вещей.

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

Одной из ключевых возможностей Azure IoT Edge является развертывание кода на устройствах IoT Edge из облака. Модули IoT Edge — это выполняемые пакеты, которые реализованы в виде контейнеров. В этом разделе вы развернете предварительно созданный модуль из раздела "Модули IoT Edge" Реестр артефактов Microsoft.

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

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

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

  2. В меню слева в разделе Управление устройствами выберите "Устройства".

  3. Выберите идентификатор устройства целевого устройства IoT Edge из списка.

    При создании нового устройства IoT Edge отобразится код состояния 417 -- The device's deployment configuration is not set на портале Azure. Это состояние является нормальным и означает, что устройство готово к развертыванию модуля.

  4. На верхней панели выберите Задание модулей.

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

  5. В разделе модулей IoT Edge выберите "Добавить", а затем выберите "Модуль IoT Edge".

  6. Обновите следующие параметры модуля:

    Параметр Значение
    Имя модуля Интернета вещей SimulatedTemperatureSensor
    URI образа mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    Политика перезапуска всегда
    Требуемое состояние выполняется
  7. Нажмите кнопку "Далее": маршруты для продолжения настройки маршрутов.

  8. Добавьте маршрут, который отправляет все сообщения из имитированного модуля температуры в Центр Интернета вещей.

    Параметр Значение
    Имя. SimulatedTemperatureSensorToIoTHub
    Значение FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. По завершении выберите Next: Отзыв и создание.

  10. Просмотрите файл JSON, а затем щелкните Создать. В файле JSON определены все модули, развертываемые на устройстве IoT Edge.

    Примечание.

    После отправки нового развертывания на устройство IoT Edge на ваше устройство ничего отправляться не будет. Вместо этого устройство регулярно выполняет запрос к Центру Интернета вещей для получения новых сведений. Если устройство обнаруживает обновленный манифест развертывания, оно использует информацию о новом развертывании для получения образов модуля с облака с последующим локальным запуском модулей. Этот процесс может занять несколько минут.

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

На ней должны быть указаны три модуля: $edgeAgent, $edgeHub и SimulatedTemperatureSensor. Если один или несколько модулей имеют значение "Да" в разделе "Указано в развертывании ", но не в разделе "Сообщается по устройству", устройство IoT Edge по-прежнему запускает их. Подождите несколько минут и обновите страницу.

Снимок экрана, на котором показан параметр SimulatedTemperatureSensor в списке развернутых модулей.

Если у вас возникли проблемы с развертыванием модулей, см. статью "Устранение неполадок устройств IoT Edge из портал Azure".

просмотр сформированных данных.

В этом руководстве мы создали новое устройство IoT Edge и установили на нем среду выполнения IoT Edge. Затем с помощью портала Azure мы развернули модуль IoT Edge на устройстве, обеспечив возможность запуска без необходимости менять настройки на устройстве.

В этом примере отправленный модуль создает примеры данных среды, которые можно использовать для последующего тестирования. Имитируемый датчик выполняет мониторинг оборудования и окружающей среды. Например, этот датчик может быть в серверной комнате, производственном цехе или ветроэлектрической установке. В сообщении отображаются данные о температуре и влажности окружающей среды, температуре и давлении оборудования, а также метка времени. При работе с руководствами по IoT Edge используйте данные, созданные этим модулем, как тестовые данные для аналитики.

Откройте повторно командную строку на устройстве IoT Edge или используйте соединение SSH из Azure CLI. Убедитесь, что развернутый из облака модуль работает на вашем устройстве IoT Edge.

sudo iotedge list

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

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

sudo iotedge logs SimulatedTemperatureSensor -f

Снимок экрана: данные из модуля в выходной консоли.

Совет

В командах IoT Edge при использовании имен модулей учитывается регистр.

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

Если вы хотите продолжить ознакомление с руководствами по IoT Edge, используйте устройство, зарегистрированное и настроенное в рамках этого краткого руководства. Если нет, вы можете удалить созданные ресурсы Azure, чтобы избежать расходов.

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

Внимание

Удаление группы ресурсов — процесс необратимый.

Удалите группу IoTEdgeResources. Удаление группы ресурсов может занять несколько минут.

az group delete --name IoTEdgeResources --yes

Чтобы проверить, удалена ли группа ресурсов, просмотрите список групп ресурсов.

az group list

Следующие шаги

При работе с этим кратким руководством вы создали устройство IoT Edge и с помощью облачного интерфейса Azure IoT Edge развернули код на устройстве. В итоге вы получили устройство для тестирования, генерирующее необработанные данные о своей среде.

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