Inzicht IoT Edge automatische implementaties voor individuele apparaten of op schaal
Van toepassing op:
IoT Edge 1,1
IOT Edge 1,2
Automatische implementaties en gelaagde implementatie helpen u bij het beheren en configureren van modules op grote aantallen IoT Edge apparaten.
Azure IoT Edge biedt twee manieren om de modules te configureren die moeten worden uitgevoerd op IoT Edge apparaten. De eerste methode is het implementeren van modules per apparaat. U maakt een implementatiemanifest en pas dit vervolgens op naam toe op een bepaald apparaat. De tweede methode is het automatisch implementeren van modules op elk geregistreerd apparaat dat voldoet aan een set gedefinieerde voorwaarden. U maakt een implementatiemanifest en definieert vervolgens op welke apparaten het van toepassing is op basis van tags in de apparaat dubbel.
Dit artikel is gericht op het configureren en bewaken van apparaten, gezamenlijk aangeduid als IoT Edge automatische implementaties. De basisimplementatiestappen zijn als volgt:
- Een operator definieert een implementatie die een set modules en de doelapparaten beschrijft. Elke implementatie heeft een implementatiemanifest dat deze informatie weerspiegelt.
- De IoT Hub-service communiceert met alle doelapparaten om ze te configureren met de gedeclareerde modules.
- De IoT Hub-service haalt de status van de IoT Edge apparaten op en maakt deze beschikbaar voor de operator. Een operator kan bijvoorbeeld zien wanneer een Edge-apparaat niet is geconfigureerd of dat een module mislukt tijdens runtime.
- Op elk moment worden nieuwe IoT Edge apparaten die voldoen aan de doelvoorwaarden geconfigureerd voor de implementatie.
In dit artikel wordt elk onderdeel beschreven dat betrokken is bij het configureren en bewaken van een implementatie. Zie Deploy and monitor IoT Edge modules at scale (Modules op schaal implementeren IoT Edge bewaken) voor een overzicht van het maken en bijwerken van een implementatie.
Implementatie
Een IoT Edge automatische implementatie wijst de installatie IoT Edge module toe om als exemplaren uit te voeren op een doelset IoT Edge apparaten. Het werkt door een implementatiemanifest IoT Edge om een lijst met modules met de bijbehorende initialisatieparameters op te nemen. Een implementatie kan worden toegewezen aan één apparaat (op basis van apparaat-id) of aan een groep apparaten (op basis van tags). Zodra een IoT Edge een implementatiemanifest ontvangt, worden de containerafbeeldingen gedownload en geïnstalleerd vanuit de respectieve container-opslagplaatsen en dienovereenkomstig geconfigureerd. Zodra een implementatie is gemaakt, kan een operator de implementatiestatus controleren om te zien of de doelapparaten correct zijn geconfigureerd.
Alleen IoT Edge kunnen worden geconfigureerd met een implementatie. De volgende vereisten moeten op het apparaat zijn geïnstalleerd voordat het de implementatie kan ontvangen:
- Het basisbesturingssysteem
- Een containerbeheersysteem, zoals Moby of Docker
- Inrichting van de IoT Edge runtime
Distributiemanifest
Een implementatiemanifest is een JSON-document waarin de modules worden beschreven die moeten worden geconfigureerd op de IoT Edge apparaten. Het bevat de configuratiemetagegevens voor alle modules, met inbegrip van de vereiste systeemmodules (met name de IoT Edge agent en IoT Edge hub).
De configuratiemetagegevens voor elke module omvatten:
- Versie
- Type
- Status (bijvoorbeeld actief of gestopt)
- Beleid voor opnieuw starten
- Afbeelding en containerregister
- Routes voor gegevensinvoer en -uitvoer
Als de module-afbeelding is opgeslagen in een privécontainerregister, bevat IoT Edge agent de registerreferenties.
Doelvoorwaarde
De doelvoorwaarde wordt continu geëvalueerd gedurende de hele levensduur van de implementatie. Alle nieuwe apparaten die aan de vereisten voldoen, worden opgenomen en alle bestaande apparaten die niet meer voldoen, worden verwijderd. De implementatie wordt opnieuw geactiveerd als de service een wijziging in de doelvoorwaarde detecteert.
U hebt bijvoorbeeld een implementatie met een doelvoorwaarde tags.environment = 'prod'. Wanneer u de implementatie start, zijn er 10 productieapparaten. De modules zijn geïnstalleerd op deze tien apparaten. De IoT Edge agentstatus bevat in totaal 10 apparaten, 10 geslaagde reacties, 0 foutreacties en 0 in behandeling zijnde antwoorden. Nu voegt u nog vijf apparaten toe met tags.environment = 'prod'. De service detecteert de wijziging en de status van de IoT Edge-agent wordt in totaal 15 apparaten, 10 geslaagde reacties, 0 foutreacties en 5 reacties in behandeling tijdens de implementatie op de vijf nieuwe apparaten.
Gebruik een Booleaanse voorwaarde voor apparaattweetags, gerapporteerde eigenschappen van apparaattwee of deviceId om de doelapparaten te selecteren. Als u voorwaarde met tags wilt gebruiken, moet u de sectie 'tags': toevoegen aan de apparaat dubbel onder hetzelfde {} niveau als de eigenschappen. Meer informatie over tags in apparaattwee
Voorbeelden van doelvoorwaarden:
- deviceId ='linuxprod1'
- tags.environment ='prod'
- tags.environment = 'prod' AND tags.location = 'westus'
- tags.environment = 'prod' OR tags.location = 'westus'
- tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'
- properties.reported.devicemodel = '4000x'
Houd rekening met deze beperkingen wanneer u een doelvoorwaarde maakt:
- In een apparaat dubbel kunt u alleen een doelvoorwaarde maken met behulp van tags, gerapporteerde eigenschappen of deviceId.
- Dubbele aanhalingstekens zijn niet toegestaan in een deel van de doelvoorwaarde. Gebruik enkele aanhalingstekens.
- Enkele aanhalingstekens vertegenwoordigen de waarden van de doelvoorwaarde. Daarom moet u de enkele prijsopgave escapen met een andere enkele prijsopgave als deze deel uitmaakt van de apparaatnaam. Als u zich bijvoorbeeld wilt richten op een apparaat met de
operator'sDevicenaam , schrijft udeviceId='operator''sDevice'. - Cijfers, letters en de volgende tekens zijn toegestaan in doelvoorwaardewaarden:
“()<>@,;:\\"/?={} \t\n\r. - De volgende tekens zijn niet toegestaan in de doelvoorwaardesleutels:
/;.
Prioriteit
Een prioriteit definieert of een implementatie moet worden toegepast op een doelapparaat ten opzichte van andere implementaties. Een implementatieprioriteit is een positief geheel getal, met grotere getallen die een hogere prioriteit aantekenen. Als een IoT Edge is gericht op meer dan één implementatie, is de implementatie met de hoogste prioriteit van toepassing. Implementaties met lagere prioriteiten worden niet toegepast en worden niet samengevoegd. Als een apparaat is gericht op twee of meer implementaties met dezelfde prioriteit, is de meest recent gemaakte implementatie (bepaald door het tijdstempel van het maken) van toepassing.
Labels
Labels zijn sleutel-waardeparen voor tekenreeksen die u kunt gebruiken om implementaties te filteren en te groeperen. Een implementatie kan meerdere labels hebben. Labels zijn optioneel en hebben geen invloed op de daadwerkelijke configuratie van IoT Edge apparaten.
Metrische gegevens
Standaard rapporteren alle implementaties over vier metrische gegevens:
- Gericht toont de IoT Edge die overeenkomen met de doelvoorwaarde voor implementatie.
- Toegepast toont de beoogde IoT Edge apparaten die niet het doelwit zijn van een andere implementatie met een hogere prioriteit.
- De rapportage geslaagd toont IoT Edge apparaten die hebben gerapporteerd dat de modules zijn geïmplementeerd.
- Rapportagefout toont de IoT Edge apparaten die hebben gerapporteerd dat een of meer modules niet zijn geïmplementeerd. Als u de fout verder wilt onderzoeken, maakt u op afstand verbinding met die apparaten en bekijkt u de logboekbestanden.
Daarnaast kunt u uw eigen aangepaste metrische gegevens definiëren om de implementatie te controleren en beheren.
Metrische gegevens bieden samenvattingen van de verschillende staten die apparaten kunnen rapporteren als gevolg van het toepassen van een implementatieconfiguratie. Met metrische gegevens kan een query worden uitgevoerd op gerapporteerde eigenschappen van de EdgeHub-moduletwee,zoals lastDesiredStatus of lastConnectTime. Bijvoorbeeld:
SELECT deviceId FROM devices
WHERE properties.reported.lastDesiredStatus.code = 200
Het toevoegen van uw eigen metrische gegevens is optioneel en heeft geen invloed op de daadwerkelijke configuratie van IoT Edge apparaten.
Gelaagde implementatie
Gelaagde implementaties zijn automatische implementaties die kunnen worden gecombineerd om het aantal unieke implementaties te verminderen dat moet worden gemaakt. Gelaagde implementaties zijn handig in scenario's waarin dezelfde modules in verschillende combinaties in veel automatische implementaties worden hergebruikt.
Gelaagde implementaties hebben dezelfde basisonderdelen als automatische implementaties. Ze richten zich op apparaten op basis van tags in de apparaattweeling en bieden dezelfde functionaliteit voor labels, metrische gegevens en statusrapportage. Aan gelaagde implementaties zijn ook prioriteiten toegewezen, maar in plaats van de prioriteit te gebruiken om te bepalen welke implementatie wordt toegepast op een apparaat, bepaalt de prioriteit hoe meerdere implementaties op een apparaat worden gerangschikt. Als twee gelaagde implementaties bijvoorbeeld een module of een route met dezelfde naam hebben, wordt de gelaagde implementatie met de hogere prioriteit toegepast terwijl de lagere prioriteit wordt overschreven.
De systeemruntimemodules edgeAgent en edgeHub zijn niet geconfigureerd als onderdeel van een gelaagde implementatie. Voor IoT Edge apparaat dat is gericht op een gelaagde implementatie, moet er eerst een standaard automatische implementatie op worden toegepast. De automatische implementatie biedt de basis waarop gelaagde implementaties kunnen worden toegevoegd.
Een IoT Edge kan slechts één standaard automatische implementatie toepassen, maar kan meerdere gelaagde automatische implementaties toepassen. Alle gelaagde implementaties die gericht zijn op een apparaat, moeten een hogere prioriteit hebben dan de automatische implementatie voor dat apparaat.
Denk bijvoorbeeld aan het volgende scenario van een bedrijf dat gebouwen beheert. Ze hebben IoT Edge modules ontwikkeld voor het verzamelen van gegevens van beveiligingscamera's, bewegingssensoren en lifts. Niet alle gebouwen kunnen echter alle drie de modules gebruiken. Bij standaard automatische implementaties moet het bedrijf afzonderlijke implementaties maken voor alle modulecombinaties die nodig zijn voor hun gebouwen.

Zodra het bedrijf echter overschakelt naar gelaagde automatische implementaties, zien ze dat ze dezelfde modulecombinaties kunnen maken voor hun gebouwen, met minder implementaties om te beheren. Elke module heeft een eigen gelaagde implementatie en de apparaattags bepalen welke modules aan elk gebouw worden toegevoegd.

Configuratie van module twin
Wanneer u met gelaagde implementaties werkt, kunt u, opzettelijk of anderszins, twee implementaties hebben met dezelfde module die gericht is op een apparaat. In die gevallen kunt u beslissen of de implementatie met een hogere prioriteit de module dubbel moet overschrijven of moet worden overschreven. U kunt bijvoorbeeld een implementatie hebben die dezelfde module op 100 verschillende apparaten van toepassing is. 10 van deze apparaten hebben echter beveiligde faciliteiten en hebben aanvullende configuratie nodig om te kunnen communiceren via proxyservers. U kunt een gelaagde implementatie gebruiken om eigenschappen van module twin toe te voegen waarmee deze 10 apparaten veilig kunnen communiceren zonder de bestaande module twin-informatie van de basisimplementatie te overschrijven.
U kunt de gewenste eigenschappen van de module twin in het implementatiemanifest aan elkaar toe te appen. Waar u in een standaardimplementatie eigenschappen toevoegt in de sectie properties.desired van de moduletweer, kunt u in een gelaagde implementatie een nieuwe subset van gewenste eigenschappen declareer.
In een standaardimplementatie kunt u bijvoorbeeld de module voor de gesimuleerde temperatuursensor toevoegen met de volgende gewenste eigenschappen, zodat deze in intervallen van 5 seconden gegevens moet verzenden:
"SimulatedTemperatureSensor": {
"properties.desired": {
"SendData": true,
"SendInterval": 5
}
}
In een gelaagde implementatie die is gericht op een aantal of alle dezelfde apparaten, kunt u een eigenschap toevoegen die de gesimuleerde sensor vertelt dat 1000 berichten moeten worden verzonden en vervolgens moet worden gestopt. U wilt de bestaande eigenschappen niet overschrijven, dus maakt u een nieuwe sectie binnen de gewenste eigenschappen met de naam , die de layeredProperties nieuwe eigenschap bevat:
"SimulatedTemperatureSensor": {
"properties.desired.layeredProperties": {
"StopAfterCount": 1000
}
}
Op een apparaat dat beide implementaties heeft toegepast, worden de volgende eigenschappen in de moduletweer voor de gesimuleerde temperatuursensor weergegeven:
"properties": {
"desired": {
"SendData": true,
"SendInterval": 5,
"layeredProperties": {
"StopAfterCount": 1000
}
}
}
Als u het veld van de module dubbel in een gelaagde implementatie in stelt, worden de gewenste eigenschappen voor die module overschreven in implementaties met properties.desired lagere prioriteit.
Gefaseerd uitrollen
Een gefaseerd implementeren is een algemeen proces waarbij een operator wijzigingen implementeert in een uitgebreide set IoT Edge apparaten. Het doel is om wijzigingen geleidelijk aan te brengen om het risico te verkleinen dat er grootschalige wijzigingen worden aangebracht die fouten maken. Automatische implementaties helpen bij het beheren van gefaseerd implementeren op een IoT Edge apparaten.
Een gefaseerd implementatie wordt uitgevoerd in de volgende fasen en stappen:
- Stel een testomgeving op van IoT Edge apparaten door ze in terichten en een apparaattweetag in te stellen, zoals
tag.environment='test'. De testomgeving moet de productieomgeving spiegelen waar de implementatie uiteindelijk op is gericht. - Maak een implementatie met inbegrip van de gewenste modules en configuraties. De doelvoorwaarde moet gericht zijn op de testomgeving IoT Edge apparaatomgeving.
- Valideer de nieuwe moduleconfiguratie in de testomgeving.
- Werk de implementatie bij met een subset van productieapparaten IoT Edge door een nieuwe tag toe te voegen aan de doelvoorwaarde. Zorg er ook voor dat de prioriteit voor de implementatie hoger is dan bij andere implementaties die momenteel op deze apparaten zijn gericht
- Controleer of de implementatie is geslaagd op de doel-IoT-apparaten door de implementatiestatus te bekijken.
- Werk de implementatie bij voor alle resterende IoT Edge apparaten.
Terugdraaiactie
Implementaties kunnen worden teruggedraaid als u fouten of onjuiste configuraties ontvangt. Omdat een implementatie de absolute moduleconfiguratie voor een IoT Edge-apparaat definieert, moet er ook een extra implementatie met een lagere prioriteit op hetzelfde apparaat worden gericht, zelfs als het doel is om alle modules te verwijderen.
Als u een implementatie verwijdert, worden de modules niet van de doelapparaten verwijderd. Er moet een andere implementatie zijn die een nieuwe configuratie voor de apparaten definieert, zelfs als het een lege implementatie is.
Voer terugdraaien uit in de volgende volgorde:
- Controleer of een tweede implementatie ook is gericht op dezelfde apparaatset. Als het doel van het terugdraaien is om alle modules te verwijderen, moet de tweede implementatie geen modules bevatten.
- Wijzig of verwijder de doelvoorwaarde-expressie van de implementatie die u wilt terugdraaien, zodat de apparaten niet meer voldoen aan de doelvoorwaarde.
- Controleer of het terugdraaien is geslaagd door de implementatiestatus weer te geven.
- De teruggedraaide implementatie mag niet langer de status weergeven voor de apparaten die zijn teruggedraaid.
- De tweede implementatie moet nu de implementatiestatus bevatten voor de apparaten die zijn teruggedraaid.
Volgende stappen
- Doorloop de stappen voor het maken, bijwerken of verwijderen van een implementatie in Deploy and monitor IoT Edge modules at scale (Implementatieen IoT Edge op schaal).
- Meer informatie over andere IoT Edge zoals de IoT Edge runtime- en IoT Edge modules.