Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
IoT Edge 1.5
Ważne
Obsługiwana wersja usługi IoT Edge 1.5 LTS. Usługa IoT Edge 1.4 LTS kończy się od 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.
Użyj interfejsu wiersza polecenia platformy Azure, aby utworzyć automatyczne wdrażanie usługi Azure IoT Edge i zarządzać wdrożeniami dla wielu urządzeń jednocześnie. Wdrożenia automatyczne dla usługi IoT Edge są częścią funkcji zarządzania urządzeniami w usłudze Azure IoT Hub. Wdrożenia umożliwiają wdrażanie wielu modułów na wielu urządzeniach, śledzenie stanu i kondycji modułów oraz wprowadzanie zmian w razie potrzeby.
W tym artykule skonfigurujesz interfejs wiersza polecenia platformy Azure i rozszerzenie IoT. Następnie wdrażasz moduły w zestawie urządzeń usługi IoT Edge i monitorujesz postęp przy użyciu poleceń interfejsu wiersza polecenia.
Wymagania wstępne
Centrum IoT w ramach subskrypcji platformy Azure.
Co najmniej jedno urządzenie usługi IoT Edge.
Jeśli nie masz skonfigurowanego urządzenia usługi IoT Edge, możesz go utworzyć na maszynie wirtualnej platformy Azure. Wykonaj kroki opisane w jednym z następujących artykułów szybki start: Tworzenie wirtualnego urządzenia z systemem Linux lub Tworzenie wirtualnego urządzenia z systemem Windows.
Interfejs wiersza polecenia platformy Azure w środowisku. Wersja interfejsu wiersza polecenia platformy Azure musi być w wersji 2.0.70 lub nowszej. Użyj
az --versiondo sprawdzenia. Ta wersja obsługuje polecenia rozszerzenia az i wprowadza platformę poleceń Knack.Rozszerzenie IoT dla interfejsu wiersza polecenia platformy Azure.
Konfigurowanie manifestu wdrożenia
Manifest wdrożenia to dokument JSON opisujący moduły do wdrożenia, sposób przepływu danych między modułami i żądane właściwości bliźniaczych reprezentacji modułu. Aby uzyskać więcej informacji, zobacz Dowiedz się, jak wdrażać moduły i ustanawiać trasy w usłudze IoT Edge.
Aby wdrożyć moduły przy użyciu interfejsu wiersza polecenia platformy Azure, zapisz manifest wdrożenia lokalnie jako plik .txt. Po uruchomieniu polecenia użyjesz ścieżki pliku w następnej sekcji, aby zastosować konfigurację do urządzenia.
Oto podstawowy manifest wdrożenia z jednym modułem jako przykład.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"schemaVersion": "1.1",
"runtime": {
"type": "docker",
"settings": {
"minDockerVersion": "v1.25",
"loggingOptions": "",
"registryCredentials": {}
}
},
"systemModules": {
"edgeAgent": {
"type": "docker",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-agent:1.5",
"createOptions": "{}"
}
},
"edgeHub": {
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-hub:1.5",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
}
}
},
"modules": {
"SimulatedTemperatureSensor": {
"version": "1.5",
"type": "docker",
"status": "running",
"restartPolicy": "always",
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
}
}
}
}
},
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {
"upstream": "FROM /messages/* INTO $upstream"
},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Uwaga
Ten przykładowy manifest wdrożenia używa schematu w wersji 1.1 dla agenta i centrum usługi IoT Edge. Wersja schematu 1.1 jest wydana wraz z usługą IoT Edge w wersji 1.0.10. Umożliwia korzystanie z funkcji, takich jak kolejność uruchamiania modułu i priorytetyzacja tras.
Wdrożenie warstwowe
Wdrożenia warstwowe to typ automatycznego wdrażania, który można stosować nawzajem. Aby uzyskać więcej informacji na temat wdrożeń warstwowych, zobacz Omówienie wdrożeń automatycznych usługi IoT Edge dla pojedynczych urządzeń lub na dużą skalę.
Wdrożenia warstwowe można tworzyć i zarządzać nimi za pomocą interfejsu wiersza polecenia platformy Azure, podobnie jak w przypadku dowolnego wdrożenia automatycznego, z kilkoma różnicami. Po utworzeniu wdrożenia warstwowego interfejs wiersza polecenia platformy Azure działa dla wdrożeń warstwowych tak samo jak w przypadku dowolnego wdrożenia. Aby utworzyć wdrożenie warstwowe, dodaj flagę --layered do polecenia create.
Druga różnica polega na konstruowaniu manifestu wdrożenia. Standardowe wdrożenia automatyczne muszą zawierać moduły środowiska uruchomieniowego systemu i wszystkie moduły użytkownika. Wdrożenia warstwowe mogą obejmować tylko moduły użytkowników. Wdrożenia warstwowe wymagają również standardowego automatycznego wdrażania na urządzeniu, aby dostarczać wymagane składniki każdego urządzenia usługi IoT Edge, takie jak moduły środowiska uruchomieniowego systemu.
Oto podstawowy manifest wdrożenia warstwowego z jednym modułem jako przykład.
{
"content": {
"modulesContent": {
"$edgeAgent": {
"properties.desired.modules.SimulatedTemperatureSensor": {
"settings": {
"image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
"createOptions": "{}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always",
"version": "1.5"
}
},
"$edgeHub": {
"properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
},
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
}
}
}
Uwaga
Ten manifest wdrożenia warstwowego ma nieco inny format niż standardowy manifest wdrożenia. Żądane właściwości modułów środowiska uruchomieniowego są zwinięte i używają notacji kropkowej. To formatowanie jest wymagane, aby witryna Azure Portal rozpoznawała wdrożenie warstwowe. Na przykład:
properties.desired.modules.<module_name>properties.desired.routes.<route_name>
W poprzednim przykładzie przedstawiono ustawienie properties.desired wdrożenia warstwowego dla modułu. Jeśli to wdrożenie warstwowe jest przeznaczone dla urządzenia, na którym jest już stosowany ten sam moduł, zastępuje wszystkie istniejące żądane właściwości. Aby zaktualizować żądane właściwości zamiast ich zastępowania, zdefiniuj nową podsekcję. Na przykład:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"SendData": true,
"SendInterval": 5
}
}
Możesz również wyrazić to samo przy użyciu następującej składni:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties.SendData" : true,
"properties.desired.layeredProperties.SendInterval": 5
}
Uwaga
Obecnie wszystkie wdrożenia warstwowe muszą zawierać edgeAgent obiekt, aby był prawidłowy. Nawet jeśli wdrożenie warstwowe aktualizuje tylko właściwości modułu, uwzględnij pusty obiekt. Na przykład: "$edgeAgent":{}. Wdrożenie warstwowe z pustym edgeAgent obiektem jest wyświetlane jako docelowe w bliźniaczej reprezentacji modułu edgeAgent , a nie zastosowane.
Aby utworzyć wdrożenie warstwowe:
- Dodaj flagę
--layereddo polecenia create interfejsu wiersza polecenia platformy Azure. - Nie dołączaj modułów systemowych.
- Użyj pełnej notacji kropkowej w obszarze
$edgeAgenti$edgeHub.
Aby uzyskać więcej informacji na temat konfigurowania bliźniaczych reprezentacji modułów we wdrożeniach warstwowych, zobacz Wdrażanie warstwowe.
Identyfikowanie urządzeń przy użyciu tagów
Przed utworzeniem wdrożenia należy określić, które urządzenia mają mieć wpływ. Usługa Azure IoT Edge identyfikuje urządzenia przy użyciu tagów w bliźniaczej reprezentacji urządzenia.
Każde urządzenie może mieć wiele tagów zdefiniowanych w dowolny sposób, co ma sens dla danego rozwiązania. Jeśli na przykład zarządzasz kampusem inteligentnych budynków, możesz dodać następujące tagi do urządzenia:
"tags":{
"location":{
"building": "20",
"floor": "2"
},
"roomtype": "conference",
"environment": "prod"
}
Aby uzyskać więcej informacji na temat bliźniaczych reprezentacji urządzeń i tagów, zobacz Omówienie bliźniaczych reprezentacji urządzeń i korzystanie z nich w usłudze IoT Hub.
Tworzenie wdrożenia
Wdróż moduły na urządzeniach docelowych, tworząc wdrożenie z manifestem wdrożenia i innymi parametrami.
Uruchom polecenie az iot edge deployment create , aby utworzyć wdrożenie:
az iot edge deployment create --deployment-id <deployment-id> --hub-name <hub-name> --content <file-path> --labels "<labels>" --target-condition "<target-query>" --priority <priority>
Dodaj flagę , --layered aby utworzyć wdrożenie warstwowe.
Polecenie az iot edge deployment create używa następujących parametrów:
- --layered: opcjonalna flaga identyfikująca wdrożenie jako wdrożenie warstwowe.
-
--deployment-id: nazwa wdrożenia utworzonego w centrum IoT. Użyj unikatowej nazwy z maksymalnie 128 małymi literami. Unikaj spacji i tych nieprawidłowych znaków:
& ^ [ ] { } \ | " < > /. Ten parametr jest wymagany. - --content: ścieżka pliku do manifestu wdrożenia JSON. Ten parametr jest wymagany.
-
--hub-name: nazwa centrum IoT, w którym jest tworzone wdrożenie. Centrum musi znajdować się w bieżącej subskrypcji. Zmień bieżącą subskrypcję, uruchamiając polecenie
az account set -s <subscription-name>. -
--labels: pary nazw/wartości, które opisują i ułatwiają śledzenie wdrożeń. Etykiety używają formatowania JSON dla nazw i wartości. Na przykład:
{"HostPlatform":"Linux", "Version":"3.0.1"}. -
--target-condition: Warunek określający, które urządzenia są objęte tym wdrożeniem. Warunek jest oparty na tagach bliźniaczych reprezentacji urządzenia lub zgłoszonych właściwościach bliźniaczej reprezentacji urządzenia i powinien być zgodny z formatem wyrażenia. Na przykład:
tags.environment='test' and properties.reported.devicemodel='4000x'. Jeśli nie określisz warunku docelowego, wdrożenie nie zostanie zastosowane do żadnych urządzeń. - --priority: dodatnia liczba całkowita. Jeśli co najmniej dwa wdrożenia są przeznaczone dla tego samego urządzenia, wdrożenie z najwyższym priorytetem ma zastosowanie.
-
--metrics: Metryki, które wysyłają zapytania do raportowanych
edgeHubwłaściwości w celu monitorowania stanu wdrożenia. Metryki używają danych wejściowych JSON lub ścieżki pliku. Na przykład:'{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.
Aby monitorować wdrożenie za pomocą interfejsu wiersza polecenia platformy Azure, zobacz Monitorowanie wdrożeń usługi IoT Edge.
Uwaga
Utworzenie nowego wdrożenia usługi IoT Edge może potrwać do 5 minut, aż usługa IoT Hub przetworzy nową konfigurację i wyśle nowe żądane właściwości do urządzeń docelowych.
Modyfikowanie wdrożenia
Po zmianie wdrożenia zmiany są natychmiast replikowane do wszystkich urządzeń docelowych.
Jeśli zaktualizujesz warunek docelowy, wystąpią następujące zmiany:
- Jeśli urządzenie nie spełnia starego warunku docelowego, ale spełnia nowy warunek docelowy, a to wdrożenie jest najwyższym priorytetem dla tego urządzenia, to wdrożenie jest stosowane do urządzenia.
- Jeśli urządzenie, na którym jest obecnie uruchomione to wdrożenie, nie spełnia już warunku docelowego, odinstaluje to wdrożenie i zajmie następne wdrożenie o najwyższym priorytcie .
- Jeśli urządzenie aktualnie wykonujące to wdrożenie nie spełnia już warunku docelowego i nie spełnia warunku docelowego żadnego innego wdrożenia, na urządzeniu nie następują żadne zmiany. Urządzenie nadal wykonuje bieżące moduły w ich aktualnym stanie, ale nie jest już zarządzane w ramach tego wdrożenia. Gdy urządzenie spełnia warunek docelowy innego wdrożenia, odinstalowuje to wdrożenie i przejmuje nowe.
Nie można zaktualizować zawartości wdrożenia, która zawiera moduły i trasy zdefiniowane w manifeście wdrożenia. Aby zaktualizować zawartość wdrożenia, utwórz nowe wdrożenie, które jest przeznaczone dla tych samych urządzeń z wyższym priorytetem. Możesz zmodyfikować niektóre właściwości istniejącego modułu, w tym warunek docelowy, etykiety, metryki i priorytet.
Użyj polecenia az iot edge deployment update, aby zaktualizować wdrożenie:
az iot edge deployment update --deployment-id <deployment-id> --hub-name <hub-name> --set <property1.property2='value'>
Polecenie aktualizacji wdrożenia używa następujących parametrów:
- --deployment-id: nazwa wdrożenia w centrum IoT.
-
--hub-name: nazwa centrum IoT, w którym istnieje wdrożenie. Centrum musi znajdować się w bieżącej subskrypcji. Aby przełączyć się do innej subskrypcji, uruchom polecenie
az account set -s <subscription-name>. -
--set: Zmień właściwość we wdrożeniu. Możesz zmienić następujące właściwości:
-
targetCondition(na przykładtargetCondition=tags.location.state='Oregon') labelspriority
-
- --add: Dodaj nową właściwość w wdrożeniu, w tym warunki docelowe i etykiety.
- --remove: Usuń istniejącą właściwość, w tym warunki docelowe lub etykiety.
Usuwanie wdrożenia
Po usunięciu wdrożenia, urządzenia korzystają ze wdrożenia o kolejnym najwyższym priorytecie. Jeśli urządzenia nie spełniają warunku docelowego innego wdrożenia, moduły nie zostaną usunięte po usunięciu wdrożenia.
Uruchom polecenie az iot edge deployment delete aby usunąć wdrożenie:
az iot edge deployment delete --deployment-id <deployment-id> --hub-name <hub-name>
Polecenie deployment delete używa następujących parametrów:
- --deployment-id. Nazwa wdrożenia, które istnieje w centrum IoT Hub.
-
--hub-name. Nazwa centrum IoT, w którym istnieje wdrożenie. Centrum musi znajdować się w bieżącej subskrypcji. Przejdź do żądanej subskrypcji przy użyciu polecenia
az account set -s [subscription name].
Następne kroki
Dowiedz się więcej o wdrażaniu modułów na urządzeniach usługi IoT Edge.