Udostępnij za pośrednictwem


Samouczek: usługa Azure Device Update dla usługi IoT Hub przy użyciu obrazu urządzenia Raspberry Pi

Usługa Device Update dla usługi Azure IoT Hub obsługuje aktualizacje oparte na obrazach, oparte na pakietach i oparte na skryptach. W tym samouczku przedstawiono kompleksową aktualizację urządzenia opartą na obrazie dla usługi IoT Hub przy użyciu obrazu Yocto na tablicy Urządzenia Raspberry Pi 3 B+.

Aktualizacje obrazów zapewniają wysoki poziom zaufania do stanu końcowego urządzenia i nie stanowią takich samych wyzwań związanych z zarządzaniem pakietami i zależnościami, jak aktualizacje oparte na pakietach lub skryptach. Łatwiej jest replikować wyniki aktualizacji obrazu między środowiskiem przedprodukcyjnym i produkcyjnym lub łatwo wdrożyć model trybu failover A/B.

W tym samouczku zostały wykonane następujące czynności:

  • Pobierz i zainstaluj aktualizację obrazu.
  • Przypisz tag do urządzenia IoT.
  • Zaimportuj aktualizację obrazu.
  • Wdróż aktualizację obrazu.
  • Wyświetl historię wdrażania aktualizacji.

Wymagania wstępne

Rejestrowanie urządzenia i pobieranie parametry połączenia

Dodaj urządzenie do rejestru urządzeń w centrum IoT i pobierz parametry połączenia wygenerowane przez usługę IoT Hub dla urządzenia.

  1. W witrynie Azure Portal otwórz stronę centrum IoT Hub skojarzona z wystąpieniem usługi Device Update.
  2. W okienku nawigacji po lewej stronie wybierz pozycję Urządzenia do zarządzania urządzeniami>.
  3. Na stronie Urządzenia wybierz pozycję Dodaj urządzenie.
  4. W obszarze Identyfikator urządzenia wprowadź nazwę urządzenia. Upewnij się, że zaznaczono pole wyboru Automatyczne generowanie kluczy .
  5. Wybierz pozycję Zapisz. Urządzenie zostanie wyświetlone na liście na stronie Urządzenia .
  6. Na stronie Urządzenia wybierz zarejestrowane urządzenie.
  7. Na stronie urządzenia wybierz ikonę Kopiuj obok pozycji Parametry połączenia (klucz podstawowy). Zapisz to urządzenie parametry połączenia do użycia podczas konfigurowania agenta usługi Device Update.

Uwaga

W celach demonstracyjnych ten samouczek używa parametry połączenia urządzenia do uwierzytelniania i nawiązywania połączenia z centrum IoT. W przypadku scenariuszy produkcyjnych lepiej użyć tożsamości modułu i usługi tożsamości IoT do aprowizowania urządzeń. Aby uzyskać więcej informacji, zobacz Device Update agent provisioning (Aprowizowanie agenta usługi Device Update).

Konfigurowanie urządzenia Raspberry Pi

Plik Tutorial_RaspberryPi3.zip zawiera wszystkie wymagane pliki samouczka. Pobierz plik z sekcji Zasoby najnowszej wersji na stronie Wydania aktualizacji urządzeń w usłudze GitHub i rozpakuj go.

W wyodrębnionym folderze Tutorial_RaspberryPi3 obraz podstawowy, który można migać na płytę Raspberry Pi, to adu-base-image-raspberrypi3.wic. Obraz podstawowy korzysta z kompilacji Yocto opartej na wersji 3.4.4. Obraz zawiera agenta aktualizacji urządzeń i program SWUpdate, który umożliwia aktualizację podwójnej partycji aktualizacji urządzenia. Aby uzyskać więcej informacji na temat warstw Yocto, zobacz Tworzenie niestandardowego systemu Linux przy użyciu agenta usługi Device Update przy użyciu projektu Yocto.

Pliki aktualizacji importowane za pośrednictwem usługi Device Update to:

  • Plik SWUpdate adu-update-image-raspberrypi3-1.2.0.swu
  • Niestandardowy skrypt SWUpdate example-a-b-update.sh
  • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json manifestu

Używanie narzędzia bmaptool do flash karty SD

Ważne

Usługa Azure Device Update dla oprogramowania usługi IoT Hub podlega następującym postanowieniom licencyjnym:

Przeczytaj postanowienia licencyjne przed rozpoczęciem korzystania z agenta. Instalacja i użycie agenta stanowi akceptację tych warunków. Jeśli nie zgadzasz się z postanowieniami licencyjnymi, nie używaj agenta usługi Device Update.

Użyj narzędzia flashowania systemu operacyjnego, aby zainstalować obraz podstawowy usługi Device Update na karcie SD używanej na urządzeniu Raspberry Pi. Poniższe instrukcje służą bmaptool do flashowania na karcie SD. <device> Zastąp symbol zastępczy nazwą urządzenia i <path to image> symbolem zastępczym ścieżką do pobranego pliku obrazu.

  1. bmap-tools Zainstaluj narzędzie, jeśli go nie masz.

    sudo apt-get install bmap-tools
    
  2. Znajdź ścieżkę karty SD w / dev. Ścieżka powinna wyglądać podobnie do /dev/sd* lub /dev/mmcblk*. Możesz użyć dmesg narzędzia , aby pomóc zlokalizować poprawną ścieżkę.

  3. Odinstalowywanie wszystkich zainstalowanych partycji przed flashowaniem.

    sudo umount /dev/<device>
    
  4. Upewnij się, że masz uprawnienia do zapisu na urządzeniu.

    sudo chmod a+rw /dev/<device>
    
  5. Zasysuj kartę SD.

    sudo bmaptool copy <path to image> /dev/<device>
    

    Napiwek

    Aby przyspieszyć flashowanie, możesz pobrać plik bimap i plik obrazu i umieścić je w tym samym katalogu.

Konfigurowanie agenta usługi Device Update na urządzeniu Raspberry Pi

  1. Upewnij się, że urządzenie Raspberry Pi jest połączone z siecią.

  2. Zabezpieczanie powłoki (SSH) w usłudze Raspberry Pi przy użyciu następującego polecenia w oknie programu PowerShell:

    ssh raspberrypi3 -l root
    

Tworzenie plików konfiguracji usługi Device Update

Na urządzeniu muszą znajdować się pliki konfiguracji du-config.json device Update i du-diagnostics-config.json. Aby utworzyć pliki, uruchom następujące polecenia w terminalu zalogowanym do urządzenia Raspberry Pi.

  1. Aby utworzyć plik du-config.json lub otworzyć go do edycji, uruchom następujące polecenie:

    nano /adu/du-config.json
    
  2. Edytor otwiera plik du-config.json . Jeśli tworzysz plik, jest on pusty. Skopiuj i wklej następujący kod do pliku, zastępując przykładowe wartości wszystkimi wymaganymi konfiguracjami urządzenia. Zastąp przykładowy connectionData ciąg urządzeniem parametry połączenia skopiowany w kroku rejestracji urządzenia.

    {
       "schemaVersion": "1.0",
       "aduShellTrustedUsers": [
          "adu",
          "do"
       ],
       "manufacturer": "contoso",
       "model": "virtual-vacuum-v2",
       "agents": [
          {
          "name": "main",
          "runas": "adu",
          "connectionSource": {
             "connectionType": "string",
             "connectionData": "HostName=<hub_name>.azure-devices.net;DeviceId=<device_id>;SharedAccessKey=<device_key>" 
          },
          "manufacturer": "contoso",
          "model": "virtual-vacuum-v2"
          }
       ]
    }  
    
  3. Naciśnij Ctrl+X, aby zakończyć działanie edytora, a następnie wprowadź y, aby zapisać zmiany.

  4. Utwórz plik du-diagnostics-config.json przy użyciu podobnych poleceń. Utwórz i otwórz plik:

    nano /adu/du-diagnostics-config.json
    
  5. Skopiuj i wklej następujący kod du-diagnostics-config.json do pliku. Wartości są domyślnymi lokalizacjami dziennika aktualizacji urządzeń i trzeba je zmienić tylko wtedy, gdy konfiguracja różni się od domyślnej.

    {
       "logComponents":[
          {
             "componentName":"adu",
             "logPath":"/adu/logs/"
          },
          {
             "componentName":"do",
             "logPath":"/var/log/deliveryoptimization-agent/"
          }
       ],
       "maxKilobytesToUploadPerLogPath":50
    }
    
  6. Naciśnij Ctrl+X, aby zakończyć działanie edytora, a następnie wprowadź y, aby zapisać zmiany.

  7. Użyj następującego polecenia, aby wyświetlić pliki znajdujące się w katalogu /adu/ . Powinny zostać wyświetlone oba pliki konfiguracji.

    ls -la /adu/
    
  8. Użyj następującego polecenia, aby ponownie uruchomić demona systemu aktualizacji urządzeń i upewnić się, że konfiguracje są stosowane.

    systemctl start deviceupdate-agent
    
  9. Sprawdź, czy agent działa, uruchamiając następujące polecenie:

    systemctl status deviceupdate-agent
    

    Stan powinien być wyświetlany jako aktywny i zielony.

Nawiązywanie połączenia z urządzeniem w usłudze IoT Hub i dodawanie tagu grupy

  1. Na stronie centrum IoT w witrynie Azure Portal dla wystąpienia usługi Device Update wybierz pozycję Urządzenia do zarządzania urządzeniami>w obszarze nawigacji po lewej stronie.

  2. Na stronie Urządzenia wybierz nazwę urządzenia.

  3. W górnej części strony urządzenia wybierz pozycję Bliźniacze reprezentacje urządzenia.

  4. Na stronie Bliźniaczej reprezentacji urządzenia w "reported" sekcji bliźniaczej reprezentacji "properties" urządzenia poszukaj wersji jądra systemu Linux dla urządzenia.

    W przypadku nowego urządzenia, które nie otrzymało aktualizacji z usługi Device Update, wartość właściwości DeviceManagement:DeviceInformation:1.swVersion reprezentuje wersję oprogramowania układowego uruchomioną na urządzeniu. Po zastosowaniu aktualizacji urządzenia wartość właściwości AzureDeviceUpdateCore:ClientMetadata:4.installedUpdateId reprezentuje wersję oprogramowania układowego.

    Nazwy plików obrazu podstawowego i aktualizacji mają numer wersji adu-image-image-image-machine-version.<<><><>rozszerzenie>. Podczas importowania aktualizacji zanotuj numery wersji do użycia.

Dodawanie tagu grupy

Usługa Device Update automatycznie organizuje urządzenia w grupy na podstawie przypisanych tagów i właściwości zgodności. Każde urządzenie może należeć tylko do jednej grupy, ale grupy mogą mieć wiele podgrup w celu sortowania różnych klas urządzeń. Aby uzyskać więcej informacji na temat tagów i grup, zobacz Zarządzanie grupami urządzeń.

  1. W bliźniaczej reprezentacji urządzenia usuń wszystkie istniejące wartości tagów usługi Device Update, ustawiając je na wartość null, a następnie dodaj następujący nowy tag grupy Aktualizacji urządzeń. Jeśli używasz tożsamości modułu z agentem usługi Device Update, dodaj tag w bliźniaczej reprezentacji tożsamości modułu zamiast bliźniaczej reprezentacji urządzenia.

    "tags": {
        "ADUGroup": "<CustomTagValue>"
    },
    

    Poniższy zrzut ekranu przedstawia lokalizację pliku w celu dodania tagu.

    Zrzut ekranu przedstawiający bliźniacze reprezentacje z informacjami o tagach.

  2. Wybierz pozycję Zapisz.

Importowanie aktualizacji

  1. Na stronie centrum IoT w witrynie Azure Portal dla wystąpienia usługi Device Update wybierz pozycję Zarządzanie urządzeniami> Aktualizacje w obszarze nawigacji po lewej stronie.

  2. Na stronie Aktualizacje wybierz pozycję Importuj nową aktualizację.

  3. Na stronie Importowanie aktualizacji wybierz pozycję Wybierz z kontenera magazynu.

  4. Na stronie Konta magazynu wybierz istniejące konto magazynu lub utwórz nowe konto, wybierając pozycję Konto magazynu.

  5. Na stronie Kontenery wybierz istniejący kontener lub utwórz nowy kontener, wybierając pozycję Kontener. Kontener służy do przygotowania plików aktualizacji do importowania.

    Zrzut ekranu przedstawiający konta magazynu i kontenery.

    Napiwek

    Aby uniknąć przypadkowego importowania plików z poprzednich aktualizacji, należy użyć nowego kontenera za każdym razem, gdy importujesz aktualizację. Jeśli nie używasz nowego kontenera, pamiętaj, aby usunąć wszystkie pliki z istniejącego kontenera.

  6. Na stronie kontenera wybierz pozycję Przekaż. Przeciągnij i upuść lub przejdź do i wybierz następujące pliki aktualizacji z pobranego folderu Tutorial_RaspberryPi3 :

    • adu-update-image-raspberrypi3-1.2.0.swu
    • example-a-b-update.sh
    • EDS-ADUClient.yocto-update.1.2.0.importmanifest.json
  7. Wybierz Przekaż. Po przekazaniu pliki są wyświetlane na stronie kontenera.

  8. Na stronie kontenera przejrzyj i wybierz pliki do zaimportowania, a następnie wybierz pozycję Wybierz.

    Zrzut ekranu przedstawiający wybieranie przekazanych plików.

  9. Na ekranie Importowanie aktualizacji wybierz pozycję Importuj aktualizację.

    Zrzut ekranu przedstawiający importowanie aktualizacji.

Rozpoczyna się proces importowania, a ekran przechodzi do ekranu Aktualizacje . Po pomyślnym zakończeniu importowania zostanie wyświetlony na karcie Aktualizacje . Aby uzyskać więcej informacji na temat procesu importowania, zobacz Importowanie aktualizacji do usługi Device Update.

Zrzut ekranu przedstawiający stan zadania.

Wybierz grupę urządzeń

Możesz użyć tagu grupy zastosowanego do urządzenia, aby wdrożyć aktualizację w grupie urządzeń. Wybierz kartę Grupy i wdrożenia w górnej części strony Aktualizacje , aby wyświetlić listę grup i wdrożeń oraz wykres zgodności aktualizacji.

Wykres zgodności aktualizacji przedstawia liczbę urządzeń w różnych stanach zgodności: w przypadku najnowszej aktualizacji, dostępne nowe aktualizacje i aktualizacje w toku. Aby uzyskać więcej informacji, zobacz Zgodność aktualizacji urządzeń.

W obszarze Nazwa grupy zostanie wyświetlona lista wszystkich grup urządzeń dla urządzeń połączonych z tym centrum IoT i ich dostępnymi aktualizacjami wraz z linkami umożliwiającymi wdrożenie aktualizacji w obszarze Stan. Wszystkie urządzenia, które nie spełniają wymagań klasy urządzeń grupy, są wyświetlane w odpowiedniej nieprawidłowej grupie. Aby uzyskać więcej informacji na temat tagów i grup, zobacz Zarządzanie grupami urządzeń.

Powinna zostać wyświetlona grupa urządzeń zawierająca urządzenie skonfigurowane w tym samouczku wraz z dostępnymi aktualizacjami dla urządzeń w grupie. Może być konieczne odświeżenie strony. Aby wdrożyć najlepszą dostępną aktualizację do grupy z tego widoku, wybierz pozycję Wdróż obok grupy.

Zrzut ekranu przedstawiający widok zgodności aktualizacji.

Wdrażanie aktualizacji

  1. Na stronie Szczegóły grupy wybierz kartę Bieżące wdrożenie, a następnie wybierz pozycję Wdróż obok żądanej aktualizacji w sekcji Dostępne aktualizacje. Najlepszą dostępną aktualizację dla grupy oznaczono najlepszym wyróżnieniem.

    Zrzut ekranu przedstawiający wybieranie aktualizacji.

  2. Na stronie Tworzenie wdrożenia zaplanuj rozpoczęcie wdrożenia natychmiast lub w przyszłości, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający tworzenie wdrożenia.

    Napiwek

    Domyślnie data i godzina rozpoczęcia to 24 godziny od bieżącej godziny. Pamiętaj, aby wybrać inną datę i godzinę, jeśli chcesz, aby wdrożenie rozpoczęło się wcześniej.

  3. W obszarze Szczegóły wdrożenia stan zmieni się na Aktywny. W obszarze Dostępne aktualizacje wybrana aktualizacja jest oznaczona ( wdrażanie).

    Zrzut ekranu przedstawiający wdrożenie jako Aktywne.

  4. Na stronie Aktualizacje wyświetl wykres zgodności, aby zobaczyć, że aktualizacja jest teraz w toku. Po pomyślnym zaktualizowaniu urządzenia wykres zgodności i szczegóły wdrożenia zostaną zaktualizowane, aby odzwierciedlić ten stan.

    Zrzut ekranu przedstawiający powodzenie aktualizacji.

Wyświetlanie historii wdrażania aktualizacji

Aby wyświetlić historię wdrażania:

  1. Wybierz kartę Historia wdrożenia w górnej części strony Szczegóły grupy i wybierz link szczegóły obok utworzonego wdrożenia.

    Zrzut ekranu przedstawiający historię wdrażania.

  2. Na stronie Szczegóły wdrożenia wybierz pozycję Odśwież, aby wyświetlić najnowsze szczegóły stanu.

    Zrzut ekranu przedstawiający szczegóły wdrożenia.

Czyszczenie zasobów

Jeśli nie potrzebujesz już zasobów utworzonych na potrzeby tego samouczka, możesz je usunąć.

  1. W witrynie Azure Portal przejdź do grupy zasobów zawierającej zasoby.
  2. Jeśli chcesz usunąć wszystkie zasoby w grupie, wybierz pozycję Usuń grupę zasobów.
  3. Jeśli chcesz usunąć tylko niektóre zasoby, użyj pól wyboru, aby zaznaczyć zasoby, a następnie wybierz pozycję Usuń.

Następne kroki