Informazioni sulle distribuzioni automatiche IoT Edge per singoli dispositivi o su vasta scala

Si applica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 è la versione supportata. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Le distribuzioni automatiche e la distribuzione a più livelli consentono di gestire e configurare moduli in un numero elevato di dispositivi IoT Edge.

Azure IoT Edge offre due modi per configurare i moduli da eseguire nei dispositivi IoT Edge. Il primo metodo consiste nel distribuire i moduli in base al dispositivo. Si crea un manifesto della distribuzione e quindi lo si applica a un determinato dispositivo in base al nome. Il secondo metodo consiste nel distribuire automaticamente i moduli in qualsiasi dispositivo registrato che soddisfi un set di condizioni definite. Si crea un manifesto della distribuzione e quindi si definiscono i dispositivi a cui si applica in base ai tag nel dispositivo gemello.

Non è possibile combinare distribuzioni per dispositivo e automatiche. Dopo aver avviato la destinazione dei dispositivi IoT Edge con distribuzioni automatiche (con o senza distribuzioni a più livelli), le distribuzioni per dispositivo non sono più supportate.

Questo articolo è incentrato sulla configurazione e il monitoraggio di fleet di dispositivi, denominati collettivamente distribuzioni automatiche di IoT Edge.

I passaggi di distribuzione di base sono i seguenti:

  1. Un operatore definisce un manifesto di distribuzione che descrive un set di moduli e i dispositivi di destinazione.
  2. Di conseguenza, il servizio hub IoT comunica con tutti i dispositivi di destinazione per configurarli con i moduli dichiarati.
  3. Il servizio Hub IoT recupera informazioni sullo stato dai dispositivi IoT Edge e li rende disponibili all’operatore. Ad esempio, un operatore può vedere quando un dispositivo Edge non è configurato correttamente o se un modulo non riesce durante il runtime.
  4. In qualsiasi momento, quando i nuovi dispositivi IoT Edge di destinazione sono online e si connettono con hub IoT, vengono configurati per la distribuzione.

Questo articolo descrive ogni componente coinvolto nella configurazione e nel monitoraggio di una distribuzione. Per istruzioni dettagliate sulla creazione e l'aggiornamento di una distribuzione, vedere Distribuire e monitorare i moduli di IoT Edge su larga scala.

Distribuzione

Una distribuzione automatica IoT Edge assegna immagini di moduli IoT Edge per l'esecuzione come istanze in un set di destinazione di dispositivi IoT Edge. La distribuzione automatizzata configura un manifesto della distribuzione IoT Edge per includere un elenco di moduli con i parametri di inizializzazione corrispondenti. Una distribuzione può essere assegnata a un singolo dispositivo (in base al relativo ID) o a un gruppo di dispositivi (in base ai tag). Quando un dispositivo IoT Edge riceve un manifesto di distribuzione, scarica e installa le immagini dei contenitori dai repository corrispondenti, quindi le configura come specificato. Dopo aver creato una distribuzione, un operatore può monitorare lo stato di distribuzione per verificare se i dispositivi di destinazione sono configurati correttamente.

Solo i dispositivi IoT Edge possono essere configurati con una distribuzione. Prima di poter ricevere la distribuzione, il dispositivo deve soddisfare i prerequisiti seguenti:

  • Sistema operativo di base
  • Sistema di gestione dei contenitori, come Moby o Docker
  • Provisioning del runtime IoT Edge

Manifesto della distribuzione

Un manifesto di distribuzione è un documento JSON che descrive i moduli da configurare nei dispositivi IoT Edge di destinazione e contiene i metadati di configurazione per tutti i moduli, inclusi i moduli di sistema richiesti, in particolare l'agente IoT Edge e l'hub IoT Edge.

I metadati di configurazione per ogni modulo includono:

  • Versione
  • Tipo
  • Stato (ad esempio, In esecuzione o Arrestato)
  • Criterio di riavvio
  • Registro di immagini e contenitori
  • Route per l'input e l'output dei dati

Se l'immagine del modulo è archiviata in una registro contenitori privato, le credenziali del registro sono contenute nell'agente di IoT Edge.

Condizione di destinazione

La condizione del dispositivo di destinazione viene valutata continuamente per tutta la durata della distribuzione. Tutti i nuovi dispositivi che soddisfano i requisiti sono inclusi e tutti i dispositivi esistenti che non soddisfano più i requisiti vengono rimossi. Se il servizio rileva qualsiasi variazione della condizione di destinazione, la distribuzione viene riattivata.

Ad esempio, si dispone di una distribuzione con una condizione tags.environment = 'prod'di destinazione. Quando si avvia la distribuzione, sono presenti 10 dispositivi di produzione. I moduli vengono installati correttamente in questi 10 dispositivi. Lo stato dell'agente IoT Edge mostra 10 dispositivi totali, 10 risposte riuscite, 0 risposte non riuscite e 0 risposte in sospeso. Ora si aggiungono altri cinque dispositivi con tags.environment = 'prod'. Il servizio rileva la modifica e lo stato dell'agente IoT Edge mostra ora 15 dispositivi totali, 10 risposte riuscite, 0 risposte di errore e 5 risposte in sospeso durante la distribuzione nei cinque nuovi dispositivi.

Se una distribuzione non ha una condizione di destinazione, viene applicata a nessun dispositivo.

Usare qualsiasi condizione booleana nei tag del dispositivo gemello, nelle proprietà segnalate del dispositivo gemello o in deviceId per selezionare i dispositivi di destinazione. Se si vuole usare una condizione con i tag, è necessario aggiungere una "tags":{} sezione nel dispositivo gemello con lo stesso livello delle proprietà. Per altre informazioni sui tag in un dispositivo gemello, vedere Informazioni e uso dei dispositivi gemelli in hub IoT. Per altre informazioni sulle operazioni di query, vedere hub IoT operatori del linguaggio di query e IS_DEFINED funzione.

Esempi di condizioni di destinazione:

  • 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'
  • IS_DEFINED(tags.remote)
  • NOT IS_DEFINED(tags.location.building)
  • tags.environment != null
  • [nessuno]

Quando si crea una condizione di destinazione, considerare questi vincoli:

  • Nel dispositivo gemello è possibile creare una condizione di destinazione solo usando tag, proprietà segnalate o deviceId.
  • Le virgolette doppie non sono consentite in qualsiasi parte della condizione di destinazione. Usare le virgolette singole.
  • Le virgolette singole rappresentano i valori della condizione di destinazione. Pertanto, è necessario eseguire l'escape della virgoletta singola con un'altra virgoletta singola se fa parte del nome del dispositivo. Ad esempio, per un dispositivo chiamato operator'sDevice, scrivere deviceId='operator''sDevice'.
  • Nei valori della condizione di destinazione sono consentiti i numeri, le lettere e i caratteri seguenti: "()<>@,;:\\"/?={} \t\n\r.
  • I caratteri seguenti non sono consentiti nelle chiavi della condizione di destinazione:/;.

Priorità

Una priorità definisce se un tipo di distribuzione deve essere applicato a un dispositivo di destinazione rispetto ad altre distribuzioni. Una priorità di distribuzione è un numero intero positivo compreso nell'intervallo compreso tra 0 e 2.147.483.647. I numeri più grandi indicano una priorità più alta. Se un dispositivo IoT Edge è la destinazione di più di una distribuzione, si applica la distribuzione con priorità più alta. Le distribuzioni con priorità più bassa non vengono applicate né unite. Se due distribuzioni con uguale priorità vengono assegnate a un dispositivo, si applica la distribuzione creata più di recente, in base al timestamp di creazione.

Etichette

Le etichette sono coppie di stringhe chiave/valore che è possibile usare per filtrare e raggruppare le distribuzioni. Una distribuzione può avere più etichette. Le etichette sono facoltative e non influiscono sulla configurazione dei dispositivi IoT Edge.

Metriche

Per impostazione predefinita, tutte le distribuzioni generano report per quattro metriche:

  • La destinazione mostra i dispositivi IoT Edge che corrispondono alla condizione di destinazione della distribuzione.
  • Applicato mostra i dispositivi IoT Edge di destinazione che non sono destinati a un'altra distribuzione con priorità più alta.
  • Reporting Success mostra i dispositivi IoT Edge che segnalano i moduli come distribuiti correttamente.
  • Errore di segnalazione mostra i dispositivi IoT Edge che segnalano uno o più moduli come distribuiti in modo non riuscito. Per esaminare ulteriormente questo errore, connettersi in remoto a tali dispositivi e visualizzare i file di log.

Inoltre, è possibile definire metriche personalizzate per monitorare e gestire la distribuzione.

Le metriche forniscono i conteggi di riepilogo dei diversi stati che un dispositivo può segnalare dopo l'applicazione del contenuto della configurazione. Le metriche possono eseguire query sulle proprietà segnalate del modulo gemello edgeHub, ad esempio lastDesiredStatus o last Connessione Time.

Ad esempio:

SELECT deviceId FROM devices
  WHERE properties.reported.lastDesiredStatus.code = 200

L'aggiunta di metriche personalizzate è facoltativa e non influisce sulla configurazione effettiva dei dispositivi IoT Edge.

Distribuzione a livelli

Le distribuzioni a livelli sono distribuzioni automatiche che possono essere combinate per ridurre il numero di distribuzioni univoche che devono essere create. Le distribuzioni a livelli sono utili negli scenari in cui gli stessi moduli vengono riutilizzati in combinazioni diverse in molte distribuzioni automatiche.

Le distribuzioni a livelli hanno gli stessi componenti di base di qualsiasi distribuzione automatica. Sono destinati ai dispositivi in base ai tag nei dispositivi gemelli e forniscono le stesse funzionalità relative a etichette, metriche e report sullo stato. Le distribuzioni a più livelli hanno anche priorità assegnate. Anziché usare la priorità per determinare quale distribuzione viene applicata a un dispositivo, la priorità determina la classificazione di più distribuzioni in un dispositivo. Ad esempio, se due distribuzioni a livelli hanno un modulo o una route con lo stesso nome, verrà applicata la distribuzione a livelli con priorità più alta mentre quella con priorità inferiore verrà sovrascritta.

I moduli di runtime di sistema, noti come edgeAgent e edgeHub, non sono configurati come parte di una distribuzione a più livelli. Qualsiasi dispositivo IoT Edge di destinazione di una distribuzione a più livelli, richiede innanzitutto una distribuzione automatica standard applicata. La distribuzione automatica fornisce la base su cui è possibile aggiungere distribuzioni a più livelli.

Un dispositivo IoT Edge può applicare una sola distribuzione automatica standard, ma può applicare più distribuzioni automatiche a livelli. Le distribuzioni a livelli destinate a un dispositivo devono avere una priorità più alta rispetto alla distribuzione automatica per tale dispositivo.

Si consideri ad esempio lo scenario seguente di una società che gestisce edifici. L'azienda ha sviluppato moduli IoT Edge per raccogliere dati da telecamere di sicurezza, sensori di movimento e ascensori. Tuttavia, non tutti i loro edifici possono usare tutti e tre i moduli. Con le distribuzioni automatiche standard, l'azienda deve creare distribuzioni singole per tutte le combinazioni di moduli necessarie per gli edifici.

Screenshot of showing that standard automatic deployments need to accommodate every module combination.

Tuttavia, quando l'azienda passa alle distribuzioni automatiche a più livelli, può creare le stesse combinazioni di moduli per gli edifici con un minor numero di distribuzioni da gestire. Ogni modulo ha una distribuzione a livelli e i tag dei dispositivi identificano i moduli da aggiungere a ogni edificio.

Screenshot that shows how layered automatic deployments simplify scenarios where the same modules are combined in different ways.

Configurazione del modulo gemello

Quando si lavora con distribuzioni a più livelli, è possibile, intenzionalmente o in altro modo, avere due distribuzioni con lo stesso modulo destinato a un dispositivo. In questi casi, è possibile decidere se la distribuzione con priorità più alta deve sovrascrivere il modulo gemello o aggiungerla. Ad esempio, potrebbe essere presente una distribuzione che applica lo stesso modulo a 100 dispositivi diversi. Tuttavia, 10 di questi dispositivi si trovano in strutture sicure e richiedono una configurazione aggiuntiva per comunicare tramite server proxy. È possibile usare una distribuzione a più livelli per aggiungere proprietà dei moduli gemelli che consentono a tali 10 dispositivi di comunicare in modo sicuro senza sovrascrivere le informazioni del modulo gemello esistenti dalla distribuzione di base.

È possibile aggiungere le proprietà desiderate del modulo gemello nel manifesto della distribuzione. In una distribuzione standard è necessario aggiungere proprietà nella sezione properties.desired del modulo gemello. In una distribuzione a più livelli, tuttavia, è possibile dichiarare un nuovo subset di proprietà desiderate.

Ad esempio, in una distribuzione standard è possibile aggiungere il modulo sensore temperatura simulato con le proprietà desiderate seguenti che indicano di inviare dati in intervalli di 5 secondi:

"SimulatedTemperatureSensor": {
  "properties.desired": {
    "SendData": true,
    "SendInterval": 5
  }
}

In una distribuzione a più livelli destinata ad alcuni o a tutti questi stessi dispositivi, è possibile aggiungere una proprietà che indica al sensore simulato di inviare 1000 messaggi e quindi arrestarsi. Non si desidera sovrascrivere le proprietà esistenti, quindi si crea una nuova sezione all'interno delle proprietà desiderate denominate layeredProperties, che contiene la nuova proprietà:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "StopAfterCount": 1000
  }
}

Un dispositivo con entrambe le distribuzioni applicate rifletterà le proprietà seguenti nel modulo gemello per il sensore di temperatura simulato:

"properties": {
  "desired": {
    "SendData": true,
    "SendInterval": 5,
    "layeredProperties": {
      "StopAfterCount": 1000
    }
  }
}

Se si imposta il properties.desired campo del modulo gemello in una distribuzione a più livelli, properties.desired sovrascriverà le proprietà desiderate per tale modulo in qualsiasi distribuzione con priorità inferiore.

Implementazione graduale

Un'implementazione graduale è un processo in base al quale un operatore distribuisce le modifiche a un set più ampio di dispositivi IoT Edge. L'obiettivo è apportare modifiche gradualmente per ridurre il rischio di apportare modifiche di rilievo su larga scala. Le distribuzioni automatiche consentono di gestire le implementazioni in più fasi in una flotta di dispositivi IoT Edge.

Un'implementazione graduale viene eseguita in base alle fasi e ai passaggi seguenti:

  1. Definire un ambiente di test di dispositivi IoT Edge eseguendone il provisioning e impostando un tag di dispositivo gemello come tag.environment='test'. L'ambiente di test deve rispecchiare l'ambiente di produzione a cui sarà infine destinata la distribuzione.
  2. Creare una distribuzione, inclusi i moduli e le configurazioni desiderate. La condizione di destinazione deve essere destinata all'ambiente di test dei dispositivi IoT Edge.
  3. Convalidare la nuova configurazione dei moduli nell'ambiente di test.
  4. Aggiornare la distribuzione per includere un sottoinsieme di dispositivi IoT Edge di produzione, aggiungendo un nuovo tag alla condizione di destinazione. Assicurarsi inoltre che la priorità per la distribuzione sia superiore rispetto alle altre distribuzioni attualmente destinate ai dispositivi.
  5. Verificare che la distribuzione sia riuscita nei dispositivi IoT Edge di destinazione visualizzando lo stato della distribuzione.
  6. Aggiornare la distribuzione per destinarla a tutti i dispositivi IoT Edge di produzione rimanenti.

Rollback

È possibile eseguire il rollback delle distribuzioni in caso di errori o di problemi di configurazione. Dato che una distribuzione definisce la configurazione assoluta dei moduli per un dispositivo IoT Edge, è necessario destinare una distribuzione aggiuntiva allo stesso dispositivo con una priorità inferiore, anche se l'obiettivo è quello di rimuovere tutti i moduli.

L'eliminazione di una distribuzione non rimuove i moduli dai dispositivi di destinazione. Deve essere presente un'altra distribuzione che definisce una nuova configurazione per i dispositivi, anche se si tratta di una distribuzione vuota.

Tuttavia, l'eliminazione di una distribuzione può rimuovere moduli dal dispositivo di destinazione se si tratta di una distribuzione a più livelli. Una distribuzione a più livelli aggiorna la distribuzione sottostante, potenzialmente aggiungendo moduli. La rimozione di una distribuzione a più livelli rimuove l'aggiornamento alla distribuzione sottostante, rimuovendo potenzialmente i moduli.

Ad esempio, a un dispositivo è applicata la distribuzione di base A e le distribuzioni A e M a più livelli( in modo che le distribuzioni A, O e M vengano distribuite nel dispositivo). Se la distribuzione a più livelli M viene quindi eliminata, A e O vengono applicati al dispositivo e i moduli univoci per la distribuzione M vengono rimossi.

Eseguire i rollback con la sequenza seguente:

  1. Verificare che esista una seconda distribuzione destinata allo stesso set di dispositivi. Se l'obiettivo del rollback è rimuovere tutti i moduli, la seconda distribuzione non deve includere alcun modulo.
  2. Modificare o rimuovere l'espressione della condizione di destinazione della distribuzione di cui si vuole eseguire il rollback in modo che i dispositivi non soddisfino più la condizione di destinazione.
  3. Verificare che il rollback sia stato eseguito correttamente visualizzando lo stato di distribuzione.
    • La distribuzione di cui viene eseguito il rollback non deve più visualizzare lo stato per i dispositivi inclusi nel rollback.
    • La seconda distribuzione dovrebbe ora includere lo stato di distribuzione per i dispositivi di cui è stato eseguito il rollback.

Passaggi successivi