Dela via


Distribuera IoT Edge på en virtuell Ubuntu-dator på Azure Stack Edge

GÄLLER FÖR: Ja för Pro GPU SKUAzure Stack Edge Pro – GPUJa för Pro 2 SKUAzure Stack Edge Pro 2Ja för Pro R SKUAzure Stack Edge Pro RJa för Mini R SKUAzure 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:

  1. Skapa eller identifiera IoT Hub- eller Azure IoT Hub Device Provisioning Service-instansen (DPS).
  2. Använd Azure CLI för att hämta Ubuntu 20.04 LTS VM-avbildningen.
  3. Ladda upp Ubuntu-avbildningen till azure Stack Edge VM-avbildningsbiblioteket.
  4. Distribuera Ubuntu-avbildningen som en virtuell dator med hjälp av följande steg:
    1. Ange namnet på den virtuella datorn, användarnamnet och lösenordet. Det är valfritt att skapa en annan disk.
    2. Konfigurera nätverkskonfigurationen.
    3. 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:

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.

  1. Använd en befintlig IoT Hub eller skapa en ny hubb. Använd de här stegen för att skapa en IoT Hub.

  2. Använd de här stegen för att registrera din Azure Stack Edge-enhet i IoT Hub.

  3. 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.

  1. Använd den befintliga IoT Hub och DPS eller skapa en ny IoT Hub.

  2. Gå till DPS-resursen och skapa en enskild registrering. 

    1. Gå till Enhetsetableringstjänsten Hantera registreringar>Lägg till individuell registrering.>
    2. Kontrollera att valet för Symmetrisk nyckel för attesteringstyp och IoT Edge-enhet är Sant. Standardvalet är Falskt.
    3. 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.
  3. 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:

  1. 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.

    1. I Azure Portal går du till Azure Marketplace.
    2. 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>
    
  2. 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
    
  3. 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.

  4. 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.

  5. Följ de här stegen för att skapa en virtuell Ubuntu-dator med hjälp av VM-avbildningen.

    1. 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.

      Skärmbild av fliken Avancerat i VM-konfigurationen i Azure Portal.

    2. 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.

      Skärmbild av fältet Anpassade data för VM-konfiguration i Azure Portal.

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:

  1. Anslut till den virtuella datorn via SSH.
  2. 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.

  1. Gå till IoT Hub-resursen i Azure Portal.

  2. Välj IoT Edge-enheten.

  3. Kontrollera att IoT Edge-körningen körs.

    Skärmbild av IoT Edge-körningsstatusen i Azure Portal.

    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.