Distribuera IoT Edge på en virtuell Ubuntu-dator på Azure Stack Edge
GÄLLER FÖR: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
I den här artikeln beskrivs hur du distribuerar en IoT Edge-körning på en virtuell Ubuntu-dator som körs på din Azure Stack Edge-enhet. För nytt utvecklingsarbete använder du självbetjäningsdistributionsmetoden som beskrivs i den här artikeln eftersom den använder den senaste programvaruversionen.
Flöde på hög nivå
Flödet på hög nivå är följande:
- Skapa eller identifiera IoT Hub- eller Azure IoT Hub Device Provisioning Service-instansen (DPS).
- Använd Azure CLI för att hämta Ubuntu 20.04 LTS VM-avbildningen.
- Ladda upp Ubuntu-avbildningen till azure Stack Edge VM-avbildningsbiblioteket.
- Distribuera Ubuntu-avbildningen som en virtuell dator med hjälp av följande steg:
- Ange namnet på den virtuella datorn, användarnamnet och lösenordet. Det är valfritt att skapa en annan disk.
- Konfigurera nätverkskonfigurationen.
- Ange ett förberett cloud-init-skript på fliken Avancerat .
Förutsättningar
Innan du kan börja bör du kontrollera att du har:
En Azure Stack Edge-enhet som du har aktiverat. Detaljerade steg finns i Aktivera Azure Stack Edge Pro GPU.
Åtkomst till den senaste Ubuntu 20.04 VM-avbildningen, antingen avbildningen från Azure Marketplace eller en anpassad avbildning som du tar med dig:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Använd stegen i Sök efter Azure Marketplace-avbildningar för att hämta VM-avbildningen.
Förbereda cloud-init-skriptet
Om du vill distribuera IoT Edge-körningen till den virtuella Ubuntu-datorn använder du ett cloud-init-skript under distributionen av den virtuella datorn.
Använd stegen i något av följande avsnitt:
- Förbered cloud-init-skriptet med symmetrisk nyckeletablering.
- Förbered cloud-init-skriptet med IoT Hub DPS.
Använda symmetrisk nyckeletablering
Om du vill ansluta enheten till IoT Hub utan DPS använder du stegen i det här avsnittet för att förbereda ett cloud-init-skript för att skapa den virtuella datorn Avancerad sida för att distribuera IoT Edge-körningen och Nvidias containerkörning.
Använd en befintlig IoT Hub eller skapa en ny hubb. Använd de här stegen för att skapa en IoT Hub.
Använd de här stegen för att registrera din Azure Stack Edge-enhet i IoT Hub.
Hämta den primära anslutningssträngen från IoT Hub för din enhet och klistra sedan in den på platsen nedan för DeviceConnectionString.
Cloud-init-skript för symmetrisk nyckeletablering
#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
Använda DPS
Använd stegen i det här avsnittet för att ansluta enheten till DPS och IoT Central. Du förbereder en script.sh-fil för att distribuera IoT Edge-körningen när du skapar den virtuella datorn.
Använd den befintliga IoT Hub och DPS eller skapa en ny IoT Hub.
- Använd de här stegen för att skapa en IoT Hub.
- Använd de här stegen för att skapa DPS och länka sedan IoT Hub till DPS-omfånget.
Gå till DPS-resursen och skapa en enskild registrering.
- Gå till Enhetsetableringstjänsten Hantera registreringar>Lägg till individuell registrering.>
- Kontrollera att valet för Symmetrisk nyckel för attesteringstyp och IoT Edge-enhet är Sant. Standardvalet är Falskt.
- Hämta följande information från DPS-resurssidan:
- Registrerings-ID. Vi rekommenderar att du använder samma ID som enhets-ID:t för din IoT Hub.
- ID-omfång som är tillgängligt på menyn Översikt.
- Primär SAS-nyckel från menyn Individuell registrering.
Kopiera och klistra in värden från IoT Hub (IDScope) och DPS (RegistrationID, Symmetric Key) i skriptargumenten.
Cloud-init-skript för IoT Hub 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
Distribuera IoT Edge-körning
Distribution av IoT Edge-körningen är en del av skapandet av virtuella datorer med hjälp av det cloud-init-skript som nämns ovan.
Här följer de övergripande stegen för att distribuera den virtuella datorn och IoT Edge-körningen:
Hämta Ubuntu VM-avbildningen från Azure Marketplace. Detaljerade steg finns i Använda Azure Marketplace-avbildning för att skapa vm-avbildningar för Azure Stack Edge.
- I Azure Portal går du till Azure Marketplace.
- Anslut till Azure Cloud Shell eller en klient med Azure CLI installerat. Detaljerade steg finns i Snabbstart för Bash i Azure Cloud Shell.
Kommentar
Om du stänger shell-sessionen tas alla variabler som skapats under shell-sessionen bort. Om sessionen öppnas igen måste variablerna återskapas.
c. Kör följande kommando för att ange prenumerationen.
az account set –subscription <subscription id>
Använd stegen i Sök efter Azure Marketplace-avbildningar för att söka efter en Ubuntu 20.04 LTS-avbildning på Azure Marketplace.
Exempel på en Ubuntu 20.04 LTS-avbildning:
$urn = Canonical:0001-com-ubuntu-server-focal:20_04-lts:20.04.202007160
Skapa en ny hanterad disk från Marketplace-avbildningen. Detaljerade steg finns i Använda Azure Marketplace-avbildning för att skapa VM-avbildning för Azure Stack Edge.
Exportera en virtuell hårddisk från den hanterade disken till ett Azure Storage-konto. Detaljerade steg finns i Exportera en virtuell hårddisk från den hanterade disken till Azure Storage.
Följ de här stegen för att skapa en virtuell Ubuntu-dator med hjälp av VM-avbildningen.
Ange cloud-init-skriptet på fliken Avancerat. Information om hur du skapar en virtuell dator finns i Distribuera en virtuell GPU-dator via Azure Portal eller Distribuera virtuell dator via Azure Portal.
Ange lämpliga anslutningssträng i cloud-init för att ansluta till IoT Hub- eller DPS-enheten. Detaljerade steg finns i Etablera med symmetriska nycklar eller Etablera med IoT Hub DPS.
Om du inte angav cloud-init när den virtuella datorn skapades måste du distribuera IoT Edge-körningen manuellt när den virtuella datorn har skapats:
- Anslut till den virtuella datorn via SSH.
- Installera containermotorn på den virtuella datorn. Detaljerade steg finns i Skapa och etablera en IoT Edge-enhet i Linux med symmetriska nycklar eller snabbstart – Konfigurera IoT Hub DPS med Azure Portal.
Verifiera IoT Edge-körningen
Använd de här stegen för att kontrollera att IoT Edge-körningen körs.
Gå till IoT Hub-resursen i Azure Portal.
Välj IoT Edge-enheten.
Kontrollera att IoT Edge-körningen körs.
Information om hur du felsöker IoT Edge-enhetskonfigurationen finns i Felsöka din IoT Edge-enhet.
Uppdatera IoT Edge-körningen
Följ anvisningarna i Uppdatera IoT Edge för att uppdatera den virtuella datorn. Information om hur du hittar den senaste versionen av Azure IoT Edge finns i Azure IoT Edge-versioner.
Nästa steg
Information om hur du distribuerar och kör en IoT Edge-modul på din virtuella Ubuntu-dator finns i stegen i Distribuera IoT Edge-moduler.
Information om hur du distribuerar Nvidias DeepStream-modul finns i Distribuera Nvidia DeepStream-modulen på en virtuell Ubuntu-dator på Azure Stack Edge Pro med GPU.
Information om hur du distribuerar NVIDIA DIGITS finns i Aktivera en GPU i en prefabricerad NVIDIA-modul.