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


Создание и подготовка IoT Edge для Linux на устройствах Windows в масштабе с помощью сертификатов X.509

Область применения: Флажок 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.

В этой статье приведены комплексные инструкции по автоматической подготовке одного или нескольких устройств IoT Edge для Linux на устройствах Windows с помощью сертификатов X.509. Вы можете автоматически подготовить устройства Azure IoT Edge с помощью службы подготовки устройств Центр Интернета вещей Azure (DPS). Если вы не знакомы с процессом автоматической подготовки, ознакомьтесь с обзором подготовки, прежде чем продолжить.

Для этого необходимо выполнить следующие задачи:

  1. Создание сертификатов и ключей.
  2. Создайте отдельную регистрацию для одного устройства или группы для набора устройств.
  3. Разверните виртуальную машину Linux с установленной средой выполнения IoT Edge и подключите ее к Центр Интернета вещей.

Применение сертификатов X.509 в качестве механизма аттестации позволяет легко масштабировать производство и упростить подготовку устройств к работе. Сертификаты X.509 обычно организованы в цепочки доверия. Начиная с самозаверяющего или доверенного корневого сертификата каждый сертификат в цепочке подписывает следующий сертификат, который находится на более низком уровне. Этот шаблон создает делегированную цепочку доверия из корневого сертификата вниз по каждому промежуточному сертификату до окончательного нижнего сертификата устройства, установленного на устройстве.

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

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

  • Активный Центр Интернета вещей
  • Экземпляр службы подготовки устройств Центр Интернета вещей в Azure, связанный с центром Интернета вещей

Требования к устройствам

Устройство Windows со следующими минимальными требованиями:

  • Требования к системе

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 и Windows Server 2019 минимальной сборки 17763 со всеми текущими накопительными обновлениями.
  • Требования к аппаратному обеспечению

    • Минимальная свободная память: 1 ГБ
    • Минимальный объем свободного места на диске: 10 ГБ
  • Поддержка виртуализации

  • Поддержка сетей

    • Для сервера Windows Server отсутствует коммутатор по умолчанию. Прежде чем можно будет развернуть EFLOW на устройстве Windows Server, необходимо создать виртуальный коммутатор. Дополнительные сведения см. статье о создании виртуального коммутатора для Linux в Windows.
    • В версиях Windows для настольных систем есть коммутатор по умолчанию, который можно использовать для установки EFLOW. При необходимости можно создать собственный настраиваемый виртуальный коммутатор.

Совет

Если вы собираетесь использовать модули Linux с ускорением GPU в развертывании Azure IoT Edge для Linux в Windows, есть несколько вариантов настройки.

Вам потребуется установить правильные драйверы в зависимости от архитектуры GPU, а также может потребоваться доступ к сборке программы предварительной оценки Windows. Сведения о том, как определить и выполнить предварительные условия для настройки, см. в статье об ускорении GPU в Azure IoT Edge для Linux в Windows.

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

Средства разработчика

Подготовьте целевое устройство для установки Azure IoT Edge для Linux в Windows и развертывания виртуальной машины Linux:

  1. Задайте для целевого устройства AllSignedполитику выполнения. Текущую политику выполнения можно проверить в командной строке PowerShell с повышенными привилегиями, выполнив следующую команду:

    Get-ExecutionPolicy -List
    

    Если политика выполнения local machine не AllSigned, можно установить политику выполнения с помощью следующей команды:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Дополнительные сведения о модуле Azure IoT Edge для Linux в Windows PowerShell см. в справочнике по функциям PowerShell.

Создание сертификатов удостоверений устройств

Сертификат удостоверения устройства — это подчиненный сертификат, который подключается через цепочку сертификатов доверия к верхнему сертификату центра сертификации X.509 (ЦС). Сертификат удостоверения устройства должен иметь общее имя (CN) для идентификатора устройства, который должен иметь устройство в Центре Интернета вещей.

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

После создания сертификата удостоверения устройства необходимо два файла: CER или PEM, который содержит открытую часть сертификата, и CER или PEM с закрытым ключом сертификата. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется открытая часть промежуточного или корневого сертификата ЦС в той же цепочке сертификатов доверия.

Чтобы настроить автоматическую подготовку с помощью X.509, вам потребуются следующие файлы:

  • Сертификат удостоверения устройства и сертификат его закрытого ключа. Сертификат удостоверения устройства отправляется в DPS при создании отдельной регистрации. Закрытый ключ передается в среду выполнения IoT Edge.
  • Полный сертификат цепочки, который должен содержать, по крайней мере, удостоверение устройства и промежуточные сертификаты. Полный сертификат цепочки передается в среду выполнения IoT Edge.
  • Промежуточный или корневой сертификат ЦС из цепочки доверия сертификатов. Этот сертификат отправляется в службу DPS, если вы создаете групповую регистрацию.

Примечание.

В настоящее время ограничение в libiothsm запрещает использование сертификатов, срок действия которых истекает с 1 января 2038 г.

Использование тестовых сертификатов (необязательно)

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

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

  • <WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>\private\iot-edge-device-identity-<name>.key.pem

Оба сертификата необходимы на устройстве IoT Edge. Если вы собираетесь использовать индивидуальную регистрацию в DPS, отправьте файл cert.pem. Если вы планируете использовать групповую регистрацию в DPS, вам также потребуется отправить промежуточный или корневой сертификат ЦС в той же цепочке доверия сертификатов. Если вы используете демонстрационные сертификаты, используйте сертификат <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem для групповой регистрации.

Создание регистрации в Службе подготовки устройств к добавлению в Центр Интернета вещей

Используйте созданные сертификаты и ключи для создания регистрации в DPS для одного или нескольких устройств IoT Edge.

Если вы хотите подготовить одно устройство IoT Edge, создайте отдельную регистрацию. Если требуется подготовка нескольких устройств, выполните действия по созданию регистрации группы DPS.

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

Дополнительные сведения о регистрации в службе подготовки устройств см. в статье "Управление регистрацией устройств".

Создание индивидуальной регистрации DPS

Отдельные регистрации принимают открытую часть сертификата удостоверения устройства и сопоставляют ее с сертификатом на устройстве.

Совет

Действия, описанные в этой статье, предназначены для портал Azure, но вы также можете создать отдельные регистрации с помощью Azure CLI. Дополнительные сведения см. в разделе az iot dps enrollment. В команде интерфейса командной строки с помощью флага edge-enabled укажите, что регистрация предназначена для устройства IoT Edge.

  1. В портал Azure перейдите к экземпляру службы подготовки устройств Центр Интернета вещей.

  2. В разделе Параметрывыберите Управление регистрациями.

  3. Выберите Добавить отдельную регистрацию и выполните следующие действия для настройки регистрации.

    • Механизм: выберите X.509.

    • Файл первичного сертификата PEM или CER: отправьте открытый файл из сертификата удостоверения устройства. Если вы использовали сценарии для создания тестового сертификата, выберите следующий файл:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • Идентификатор устройства в Центре Интернета вещей: если необходимо, укажите идентификатор устройства. Идентификаторы устройств можно использовать, чтобы указать отдельное устройство для развертывания модуля. Если не указать идентификатор устройства, используется общее имя (CN) в сертификате X.509.

    • Устройство IoT Edge: выберите значение True, чтобы указать, что это регистрация устройства IoT Edge.

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

    • Начальное состояние двойника устройства: при желании добавьте значение тега в двойник устройства. Теги можно использовать для указания групп устройств для автоматического развертывания. Например:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Выберите Сохранить.

В разделе "Управление регистрацией" можно просмотреть идентификатор регистрации для только что созданной регистрации. Запишите его, так как его можно использовать при подготовке устройства.

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

Установка Edge Интернета вещей

Создайте развертывание Azure IoT Edge для Linux в Windows на целевом устройстве.

Примечание.

В следующем примере процедуры для PowerShell показано, как развернуть IoT Edge для Linux в Windows на локальном устройстве. Для развертывания на удаленном целевом устройстве с помощью PowerShell используйте удаленный сеанс PowerShell, чтобы установить подключение к удаленному устройству и дистанционно выполнить эти команды на нем.

  1. В сеансе PowerShell с повышенными привилегиями выполните любую из следующих команд в зависимости от архитектуры целевого устройства, чтобы скачать IoT Edge для Linux в Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Установите IoT Edge для Linux на Windows на ваше устройство.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Можно указать нестандартные каталоги для установки IoT Edge для Linux в Windows и VHDX, добавив параметры INSTALLDIR="<FULLY_QUALIFIED_PATH>" и VHDXDIR="<FULLY_QUALIFIED_PATH>" в приведенную выше команду установки. Например, если вы хотите использовать папку D:\EFLOW для установки и D:\EFLOW-VHDX для VHDX , можно использовать следующий командлет PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. На целевом устройстве задайте политику выполнения AllSigned, если она еще не задана. См. предварительные требования PowerShell для команд, чтобы проверить текущую политику выполнения и задать для нее значение AllSigned.

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

    Deploy-Eflow
    

    Совет

    По умолчанию команда Deploy-Eflow создает вашу виртуальную машину Linux с 1 ГБ ОЗУ, 1 ядром виртуального ЦП и 16 ГБ дискового пространства. Однако ресурсы, необходимые вашей виртуальной машине, сильно зависят от развертываемых вами рабочих нагрузок. Если у вашей виртуальной машины недостаточно памяти для поддержки ваших рабочих нагрузок, она не запустится.

    Вы можете настроить доступные ресурсы виртуальной машины, используя дополнительные параметры команды Deploy-Eflow. Это необходимо для развертывания EFLOW на устройстве с минимальными требованиями к оборудованию.

    Например, следующая команда создает виртуальную машину с 1 виртуальным ЦП, 1 ГБ ОЗУ (представлено в МБ) и 2 ГБ дискового пространства:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Дополнительные сведения о всех доступных необязательных параметрах см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.

    Предупреждение

    По умолчанию виртуальная машина EFLOW Linux не имеет конфигурации DNS. Развертывания с помощью DHCP попытаются получить конфигурацию DNS, распространяемую DHCP-сервером. Проверьте конфигурацию DNS, чтобы обеспечить подключение к Интернету. Дополнительные сведения см. в статье AzEFLOW-DNS.

    Чтобы использовать модули Linux с ускорением GPU, можно назначить развертыванию устройство GPU. Чтобы получить доступ к этим функциям, необходимо установить необходимые компоненты, подробные сведения об ускорениях GPU для Azure IoT Edge для Linux в Windows.

    Чтобы использовать сквозное руководство GPU, добавьте в команду параметры Deploy-Eflow gpuName, gpuPassthroughType и gpuCount. Дополнительные сведения о всех доступных необязательных параметрах см. в статье о функциях PowerShell для IoT Edge для Linux в Windows.

    Предупреждение

    Включение сквозной передачи устройства может повысить уровень угрозы безопасности. Майкрософт рекомендует установить драйвер для защиты устройства от поставщика GPU. Дополнительные сведения см. в статье о развертывании графических процессоров путем прямого назначения устройств.

  5. Введите "Y", чтобы принять условия лицензии.

  6. Введите "O" или "R" для включения или отключения передачи Необязательных диагностических данных в зависимости от ваших предпочтений.

  7. После завершения развертывания в окне PowerShell появится сообщение об успешном развертывании.

    Успешное развертывание будет говорить

    После успешного развертывания вы готовы подготовить устройство.

Предоставление облачного удостоверения устройству

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

Подготовьте следующие сведения:

  • Значение области идентификаторов DPS. Вы можете узнать это значение на странице обзора в экземпляре DPS на портале Azure.
  • Файл цепочки сертификатов удостоверений устройств на устройстве.
  • Файл ключа удостоверений устройств на устройстве.

Выполните следующую команду в сеансе PowerShell с повышенными привилегиями со значениями заполнителей, обновленными собственными значениями:

Provision-EflowVm -provisioningType DpsX509 -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -identityCertPath PASTE_ABSOLUTE_PATH_TO_IDENTITY_CERTIFICATE_HERE -identityPrivateKey PASTE_ABSOLUTE_PATH_TO_IDENTITY_PRIVATE_KEY_HERE

Проверка установки

Убедитесь, что служба IoT Edge для Linux в Windows успешно установлена и настроена на вашем устройстве IoT Edge.

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

  1. Войдите в IoT Edge для Linux на виртуальной машине Windows с помощью следующей команды в сеансе PowerShell:

    Connect-EflowVm
    

    Примечание.

    Единственная учетная запись, которой разрешено подключение к виртуальной машине по протоколу SSH, — это учетная запись пользователя, который создал эту машину.

  2. После входа можно проверить список выполняющихся модулей IoT Edge с помощью следующей команды Linux:

    sudo iotedge list
    
  3. Если вам нужно устранить неполадки в работе службы IoT Edge, используйте следующие команды Linux.

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

      sudo iotedge system logs
      
    2. Используйте инструмент check для проверки конфигурации и состояния соединения устройства.

      sudo iotedge check
      

    Примечание.

    На недавно подготовленном устройстве может появиться ошибка, связанная с Центром IoT Edge:

    × рабочей готовности: каталог хранилища Edge Hub сохраняется в файловой системе узла — ошибка

    Не удалось проверить текущее состояние контейнера edgeHub

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

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

Удаление IoT Edge для Linux в Windows

Если вы хотите удалить Azure IoT Edge для Linux на устройстве, выполните следующие команды.

  1. Открытие параметров в Windows
  2. Выберите "Добавить или удалить программы"
  3. Выбор приложения Azure IoT Edge
  4. Выберите "Удалить"

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

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

Кроме того, вы можете сделать следующее: