Развертывание IoT Edge на виртуальной машине Ubuntu в Azure Stack Edge
ОБЛАСТЬ ПРИМЕНЕНИЯ: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
В этой статье описывается развертывание среды выполнения IoT Edge на виртуальной машине Ubuntu, работающей на устройстве Azure Stack Edge. Для новой работы по разработке используйте метод самостоятельного развертывания, описанный в этой статье, так как он использует последнюю версию программного обеспечения.
Высокоуровневый поток
Высокоуровневый поток выглядит следующим образом:
- Создайте или определите экземпляр службы подготовки устройств (DPS) Центр Интернета вещей или Центр Интернета вещей Azure.
- Используйте Azure CLI для получения образа виртуальной машины LTS Ubuntu 20.04 LTS.
- Отправьте образ Ubuntu в библиотеку образов виртуальной машины Azure Stack Edge.
- Разверните образ Ubuntu в качестве виртуальной машины, выполнив следующие действия.
- Укажите имя виртуальной машины, имя пользователя и пароль. Создание другого диска является необязательным.
- Настройте конфигурацию сети.
- Предоставьте подготовленный скрипт cloud-init на вкладке "Дополнительно ".
Необходимые компоненты
Перед началом работы убедитесь, что у вас есть следующие ресурсы:
Активированное устройство Azure Stack Edge. Подробные инструкции см. в статье "Активация GPU Azure Stack Edge Pro".
Доступ к последнему образу виртуальной машины Ubuntu 20.04, образу из Azure Marketplace или пользовательскому образу, который вы приносите:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Выполните действия, описанные в статье "Поиск образов Azure Marketplace", чтобы получить образ виртуальной машины.
Подготовка скрипта cloud-init
Чтобы развернуть среду выполнения IoT Edge на виртуальной машине Ubuntu, используйте скрипт cloud-init во время развертывания виртуальной машины.
Выполните действия в одном из следующих разделов:
- Подготовьте скрипт cloud-init с помощью подготовки симметричного ключа.
- Подготовьте скрипт cloud-init с помощью Центр Интернета вещей DPS.
Использование подготовки симметричного ключа
Чтобы подключить устройство к Центр Интернета вещей без DPS, выполните действия, описанные в этом разделе, чтобы подготовить скрипт cloud-init для расширенной страницы создания виртуальной машины для развертывания среды выполнения IoT Edge и среды выполнения контейнера Nvidia.
Используйте существующий Центр Интернета вещей или создайте новый концентратор. Чтобы создать Центр Интернета вещей, выполните следующие действия.
Выполните следующие действия, чтобы зарегистрировать устройство Azure Stack Edge в Центр Интернета вещей.
Получите основную строку подключения из Центр Интернета вещей для устройства, а затем вставьте ее в расположение ниже для DeviceConnectionString.
Скрипт Cloud-init для подготовки симметричного ключа
#cloud-config
runcmd:
- dcs="<DeviceConnectionString>"
- |
set -x
(
# Wait for docker daemon to start
while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do
sleep 3
done
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
#install Nvidia drivers
apt install -y ubuntu-drivers-common
ubuntu-drivers devices
ubuntu-drivers autoinstall
# Install NVIDIA Container Runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt update
apt install -y nvidia-container-runtime
fi
# Restart Docker
systemctl daemon-reload
systemctl restart docker
# Install IoT Edge
apt install -y aziot-edge
if [ ! -z $dcs ]; then
iotedge config mp --connection-string $dcs
iotedge config apply
fi
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
reboot
fi ) &
apt:
preserve_sources_list: true
sources:
msft.list:
source: "deb https://packages.microsoft.com/ubuntu/20.04/prod focal main"
key: |
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)
mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
NdCFTW7wY0Fb1fWJ+/KTsC4=
=J6gs
-----END PGP PUBLIC KEY BLOCK-----
packages:
- moby-cli
- moby-engine
write_files:
- path: /etc/systemd/system/docker.service.d/override.conf
permissions: "0644"
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local
Использование DPS
Выполните действия, описанные в этом разделе, чтобы подключить устройство к DPS и IoT Central. Вы подготовите файл script.sh для развертывания среды выполнения IoT Edge при создании виртуальной машины.
Используйте существующие Центр Интернета вещей и DPS или создайте новую Центр Интернета вещей.
- Чтобы создать Центр Интернета вещей, выполните следующие действия.
- Выполните следующие действия, чтобы создать DPS, а затем связать Центр Интернета вещей с областью DPS.
Перейдите к ресурсу DPS и создайте отдельную регистрацию.
- Перейдите к разделу "Управление регистрацией>служб>подготовки устройств", чтобы добавить индивидуальную регистрацию.
- Убедитесь, что выбор симметричного ключа для типа аттестации и устройство IoT Edge имеет значение True. Выбор по умолчанию — False.
- Получите следующие сведения на странице ресурсов DPS:
- Идентификатор регистрации. Рекомендуется использовать тот же идентификатор, что и идентификатор устройства для Центр Интернета вещей.
- Область идентификатора, доступная в меню "Обзор".
- Первичный ключ SAS из меню "Индивидуальная регистрация".
Скопируйте и вставьте значения из Центр Интернета вещей (IDScope) и DPS (RegistrationID, Симметричный ключ) в аргументы скрипта.
Скрипт Cloud-init для Центр Интернета вещей DPS
#cloud-config
runcmd:
- dps_idscope="<DPS IDScope>"
- registration_device_id="<RegistrationID>"
- key="<Symmetric Key>"
- |
set -x
(
wget https://github.com/Azure/iot-edge-config/releases/latest/download/azure-iot-edge-installer.sh -O azure-iot-edge-installer.sh \
&& chmod +x azure-iot-edge-installer.sh \
&& sudo -H ./azure-iot-edge-installer.sh -s $dps_idscope -r $registration_device_id -k $key \
&& rm -rf azure-iot-edge-installer.sh
# Wait for docker daemon to start
while [ $(ps -ef | grep -v grep | grep docker | wc -l) -le 0 ]; do
sleep 3
done
systemctl stop aziot-edge
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
#install Nvidia drivers
apt install -y ubuntu-drivers-common
ubuntu-drivers devices
ubuntu-drivers autoinstall
# Install NVIDIA Container Runtime
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt update
apt install -y nvidia-container-runtime
fi
# Restart Docker
systemctl daemon-reload
systemctl restart docker
systemctl start aziot-edge
if [ $(lspci | grep NVIDIA | wc -l) -gt 0 ]; then
reboot
fi
) &
write_files:
- path: /etc/systemd/system/docker.service.d/override.conf
permissions: "0644"
content: |
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime --log-driver local
Развертывание среды выполнения IoT Edge
Развертывание среды выполнения IoT Edge является частью создания виртуальной машины с помощью скрипта cloud-init , упомянутого выше.
Ниже приведены общие шаги по развертыванию виртуальной машины и среды выполнения IoT Edge.
Получите образ виртуальной машины Ubuntu из Azure Marketplace. Подробные инструкции см. в статье "Использование образа Azure Marketplace" для создания образа виртуальной машины для Azure Stack Edge.
- В портал Azure перейдите в Azure Marketplace.
- Подключитесь к Azure Cloud Shell или клиенту с установленным Azure CLI. Подробные инструкции см . в кратком руководстве по Bash в Azure Cloud Shell.
Примечание.
Закрытие сеанса оболочки приведет к удалению всех переменных, созданных во время сеанса оболочки. Повторное открытие сеанса потребует повторного восстановления переменных.
c. Выполните следующую команду, чтобы задать подписку.
az account set –subscription <subscription id>
Выполните действия, описанные в статье "Поиск образов Azure Marketplace" для поиска образов Azure Marketplace для Ubuntu 20.04 LTS.
Пример образа Ubuntu 20.04 LTS:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Создайте из этого образа Marketplace управляемый диск. Подробные инструкции см. в статье "Использование образа Azure Marketplace для создания образа виртуальной машины для Azure Stack Edge".
Экспорт виртуального жесткого диска из управляемого диска в учетную запись служба хранилища Azure. Подробные инструкции см. в статье "Экспорт виртуального жесткого диска" с управляемого диска в служба хранилища Azure.
Выполните следующие действия, чтобы создать виртуальную машину Ubuntu с помощью образа виртуальной машины.
Укажите скрипт cloud-init на вкладке "Дополнительно". Сведения о создании виртуальной машины см. в статье "Развертывание виртуальной машины GPU с помощью портал Azure" или "Развертывание виртуальной машины с помощью портал Azure".
Укажите соответствующие строка подключения устройства в cloud-init для подключения к устройству Центр Интернета вещей или DPS. Подробные инструкции см. в разделе "Подготовка с симметричными ключами" или "Подготовка" с помощью Центр Интернета вещей DPS.
Если вы не указали cloud-init во время создания виртуальной машины, необходимо вручную развернуть среду выполнения IoT Edge после создания виртуальной машины:
- Подключитесь к виртуальной машине через SSH.
- Установите подсистему контейнеров на виртуальной машине. Подробные инструкции см. в статье "Создание и подготовка устройства IoT Edge в Linux с помощью симметричные ключи или краткое руководство. Настройка Центр Интернета вещей DPS с помощью портал Azure".
Проверка среды выполнения IoT Edge
Используйте эти действия, чтобы убедиться, что среда выполнения IoT Edge запущена.
Перейдите к ресурсу Центр Интернета вещей в портал Azure.
Выберите устройство IoT Edge.
Убедитесь, что среда выполнения IoT Edge запущена.
Сведения об устранении неполадок с конфигурацией устройства IoT Edge см. в статье "Устранение неполадок устройства IoT Edge".
Обновление среды выполнения IoT Edge
Чтобы обновить виртуальную машину, следуйте инструкциям в разделе "Обновление IoT Edge". Последнюю версию Azure IoT Edge можно найти на сайте GitHub.
Следующие шаги
Чтобы развернуть и запустить модуль IoT Edge на виртуальной машине Ubuntu, ознакомьтесь с инструкциями по развертыванию модулей IoT Edge.
Сведения о развертывании модуля DeepStream Nvidia см. в статье "Развертывание модуля Nvidia DeepStream на виртуальной машине Ubuntu в Azure Stack Edge Pro с GPU".
Сведения о развертывании NVIDIA DIGITS см. в разделе "Включение GPU" в предварительно созданном модуле NVIDIA.