Condividi tramite


Avvio rapido: Distribuire il primo modulo IoT Edge in un dispositivo Linux virtuale

Si applica a:Segno di spunta IoT Edge 1.5 IoT Edge 1.5

Importante

IoT Edge 1.5 LTS è la versione supportata. IoT Edge 1.4 LTS è in fine vita a partire dal 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Provare Azure IoT Edge in questo avvio rapido distribuendo il codice in contenitori in un dispositivo IoT Edge Linux virtuale. IoT Edge consente di gestire in remoto il codice nei dispositivi in modo da poter inviare più carichi di lavoro al perimetro. Per questo avvio rapido, usare una macchina virtuale di Azure per il dispositivo IoT Edge. Consente di creare rapidamente un computer di test ed eliminarlo al termine.

In questa guida introduttiva si apprende come:

  • Creare un hub IoT.
  • Registrare un dispositivo IoT Edge nell'hub IoT.
  • Installare e avviare il runtime IoT Edge in un dispositivo virtuale.
  • Distribuire un modulo in modalità remota in un dispositivo IoT Edge.

Diagramma della Guida introduttiva sull'architettura per dispositivo e cloud.

Questa guida di avvio rapido illustra come creare una macchina virtuale Linux configurata per l'uso come dispositivo IoT Edge. Verrà quindi distribuito un modulo dal portale di Azure nel dispositivo. Questo avvio rapido usa un modulo sensore simulato che genera dati relativi a temperatura, umidità e pressione. Le altre esercitazioni su Azure IoT Edge si basano sulle procedure eseguite qui tramite la distribuzione di moduli aggiuntivi che analizzano dati simulati per ottenere informazioni aziendali dettagliate.

Se non si ha una sottoscrizione di Azure attiva, creare un account gratuito prima di iniziare.

Prerequisiti

Configurare l'ambiente per l'interfaccia della riga di comando di Azure.

Un gruppo di risorse per la gestione di tutte le risorse usate in questa guida introduttiva. Questo avvio rapido e le esercitazioni seguenti usano il nome del gruppo di risorse di esempio IoTEdgeResources.

az group create --name IoTEdgeResources --location westus2

Creare un hub IoT

Iniziare l'avvio rapido creando un hub IoT con l'interfaccia della riga di comando di Azure.

Diagramma che illustra come creare un hub IoT nel cloud.

Il livello gratuito dell'hub IoT funziona per questo avvio rapido. Se l'hub IoT è già stato usato in passato ed è disponibile un hub, è possibile usarlo qui.

Il codice seguente crea un hub F1 gratuito nel gruppo di risorse IoTEdgeResources. Sostituire <hub-name> con un nome univoco per l'hub IoT. La creazione di un hub IoT potrebbe richiedere alcuni minuti.

az iot hub create --resource-group IoTEdgeResources --name <hub-name> --sku F1 --partition-count 2

Se viene visualizzato un errore perché nell'abbonamento è già presente un hub IoT gratuito, modificare lo SKU in S1. Ogni sottoscrizione può avere un solo hub IoT gratuito. Se si verifica un errore che indica che il nome dell'hub IoT non è disponibile, significa che qualcuno ha già un hub con lo stesso nome. Provare con un nuovo nome.

Registrare un dispositivo IoT Edge

Registrare un dispositivo IoT Edge con l'hub IoT appena creato.

Diagramma di come registrare un dispositivo con un'identità dell'hub IoT.

Creare un'identità del dispositivo IoT Edge affinché il dispositivo possa comunicare con l'hub IoT. L'identità del dispositivo si trova nel cloud e si usa una stringa di connessione del dispositivo univoca per associare un dispositivo fisico a un'identità del dispositivo.

Poiché i dispositivi IoT Edge si comportano e sono gestiti in modo diverso dai dispositivi IoT tipici, dichiarare questa identità come dispositivo IoT Edge usando il flag --edge-enabled.

  1. Immettere il comando seguente in Azure Cloud Shell per creare un dispositivo denominato myEdgeDevice nell'hub.

    az iot hub device-identity create --device-id myEdgeDevice --edge-enabled --hub-name <hub-name>
    

    Se viene visualizzato un errore relativo alle chiavi dei criteri iothubowner, assicurarsi che Cloud Shell esegua l'ultima versione dell'estensione azure-iot.

  2. Controllare la stringa di connessione per il dispositivo, che collega il dispositivo fisico alla relativa identità nell'hub IoT. Include il nome dell'hub IoT, il nome del dispositivo e una chiave condivisa che autentica le connessioni tra loro. Usare di nuovo questa stringa di connessione nella sezione successiva per configurare il dispositivo IoT Edge.

    az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <hub-name>
    

    Ad esempio, la stringa di connessione dovrebbe essere simile a HostName=contoso-hub.azure-devices.net;DeviceId=myEdgeDevice;SharedAccessKey=<DEVICE-SHARED-ACCESS-KEY>.

Configurare il dispositivo IoT Edge

Creare una macchina virtuale con il runtime di Azure IoT Edge.

Diagramma di come avviare il runtime in un dispositivo.

Il runtime di IoT Edge viene distribuito in tutti i dispositivi IoT Edge e include tre componenti. Il daemon di sicurezza IoT Edge si avvia a ogni avvio di un dispositivo IoT Edge ed esegue il bootstrap del dispositivo avviando l'agente IoT Edge. L'agente IoT Edge semplifica la distribuzione e il monitoraggio di moduli nel dispositivo IoT Edge, tra cui l'hub di IoT Edge. L'hub IoT Edge gestisce le comunicazioni tra moduli nel dispositivo IoT Edge e tra il dispositivo e l'hub IoT.

Durante la configurazione del runtime, specificare una stringa di connessione del dispositivo. Questa stringa viene recuperata dall'interfaccia della riga di comando di Azure. La stringa associa il dispositivo fisico all'identità del dispositivo IoT Edge in Azure.

Distribuire il dispositivo IoT Edge

In questa sezione verrà usato un modello di Azure Resource Manager per creare una nuova macchina virtuale e installare il runtime IoT Edge al suo interno. Se invece si vuole usare il proprio dispositivo Linux, è possibile seguire i passaggi di installazione in Effettuare manualmente il provisioning di un singolo dispositivo Linux IoT Edge, quindi tornare a questa guida introduttiva.

Usare il pulsante Distribuisci in Azure o i comandi dell'interfaccia della riga di comando per creare un dispositivo IoT Edge basato sul modello iotedge-vm-deploy predefinito.

  • Distribuire usando il modello di Azure Resource Manager di IoT Edge.

    Distribuisci in Azure

  • Per gli utenti di Bash o Cloud Shell, copiare il comando seguente in un editor di testo, sostituire il testo segnaposto con le informazioni correnti e quindi copiare il testo nella finestra di Bash o Cloud Shell:

    az deployment group create \
    --resource-group IoTEdgeResources \
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" \
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' \
    --parameters adminUsername='azureUser' \
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) \
    --parameters authenticationType='password' \
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    
  • Per gli utenti di PowerShell, copiare il comando seguente nella finestra di PowerShell, quindi sostituire il testo segnaposto con le informazioni correnti:

    az deployment group create `
    --resource-group IoTEdgeResources `
    --template-uri "https://raw.githubusercontent.com/Azure/iotedge-vm-deploy/main/edgeDeploy.json" `
    --parameters dnsLabelPrefix='<REPLACE_WITH_VM_NAME>' `
    --parameters adminUsername='azureUser' `
    --parameters deviceConnectionString=$(az iot hub device-identity connection-string show --device-id myEdgeDevice --hub-name <REPLACE_WITH_HUB_NAME> -o tsv) `
    --parameters authenticationType='password' `
    --parameters adminPasswordOrKey="<REPLACE_WITH_PASSWORD>"
    

Questo modello accetta i parametri seguenti:

Parametro Descrizione
resource-group Il gruppo di risorse in cui vengono create le risorse. Usare il gruppo di risorse IoTEdgeResources predefinito usato in questo articolo o fornire il nome di un gruppo di risorse esistente nella sottoscrizione in uso.
template-uri Puntatore al modello di Resource Manager in uso.
dnsLabelPrefix Una stringa usata per creare il nome host della macchina virtuale. Sostituire il testo del segnaposto con un nome per la macchina virtuale.
adminUsername Nome utente per l'account amministratore della macchina virtuale. Usare il nome utente azureUser di esempio o specificare un nuovo nome utente.
deviceConnectionString Stringa di connessione dell'identità del dispositivo nell'hub IoT, che verrà usata per configurare il runtime IoT Edge nella macchina virtuale. Il comando dell'interfaccia della riga di comando all'interno di questo parametro acquisisce automaticamente la stringa di connessione. Sostituire il testo segnaposto con il nome dell'hub IoT.
authenticationType Metodo di autenticazione per l'account amministratore. In questa guida di avvio rapido viene usata l'autenticazione della password, ma è anche possibile impostare questo parametro su sshPublicKey.
adminPasswordOrKey Password o valore della chiave pubblica SSH per l'account amministratore. Sostituire il testo segnaposto con una password sicura. La password deve avere una lunghezza minima di 12 caratteri e contenere tre dei quattro elementi seguenti: caratteri minuscoli, caratteri maiuscoli, numeri e caratteri speciali.

Al termine della distribuzione, l'output in formato JSON nell'interfaccia della riga di comando contiene le informazioni SSH per connettersi alla macchina virtuale. Copiare il valore della voce public SSH della sezione output. Ad esempio, il comando SSH dovrebbe essere simile a ssh azureUser@edge-vm.westus2.cloudapp.azure.com.

Visualizzare lo stato del runtime IoT Edge

I restanti comandi di questa guida introduttiva vengono eseguiti nel dispositivo IoT Edge stesso ed è pertanto possibile verificare le operazioni effettuate nel dispositivo. Se si usa una macchina virtuale, connettersi ad essa usando il nome utente amministratore configurato e il nome DNS restituito dal comando di distribuzione. È anche possibile trovare il nome DNS nella pagina Panoramica della macchina virtuale nel portale di Azure. Usare il comando seguente per connettersi alla macchina virtuale. Sostituire <admin-username> e <DNS-name> con valori personalizzati.

ssh <admin-username>@<DNS-name>

Una volta stabilita la connessione alla macchina virtuale, verificare che il runtime sia stato installato e configurato correttamente nel dispositivo IoT Edge.

  1. Controllare se IoT Edge è in esecuzione. Il comando seguente restituisce lo stato Ok se IoT Edge è in esecuzione o fornisce errori del servizio.

    sudo iotedge system status
    

    Suggerimento

    Per eseguire comandi iotedge sono necessari privilegi elevati. Quando ci si disconnette dal computer e si accede di nuovo per la prima volta dopo l'installazione del runtime IoT Edge, le autorizzazioni vengono aggiornate automaticamente. Fino ad allora, usare sudo davanti ai comandi.

  2. Se è necessario risolvere problemi del servizio, recuperare i log di servizio.

    sudo iotedge system logs
    
  3. Visualizzare tutti i moduli in esecuzione nel dispositivo IoT Edge. Poiché il servizio è stato avviato per la prima volta, verrà visualizzato solo il modulo edgeAgent in esecuzione. Il modulo edgeAgent viene eseguito per impostazione predefinita e permette di installare e avviare tutti i moduli aggiuntivi distribuiti nel dispositivo.

    sudo iotedge list
    

Il dispositivo IoT Edge è ora configurato. È pronto per eseguire i moduli distribuiti nel cloud.

Distribuire un modulo

Gestire il dispositivo Azure IoT Edge dal cloud per distribuire un modulo che invia i dati di telemetria del dispositivo all'hub IoT.

Diagramma di come distribuire un modulo dal cloud al dispositivo.

Una funzionalità chiave di Azure IoT Edge consiste nella distribuzione del codice nei dispositivi IoT Edge dal cloud. I moduli IoT Edge sono pacchetti eseguibili implementati come contenitori. In questa sezione si distribuisce un modulo predefinito dalla sezione Moduli IoT Edge di Registro artefatti Microsoft.

Questo modulo simula un sensore e invia i dati generati. Si tratta di un codice utile per iniziare a usare IoT Edge, perché è possibile usare i dati simulati per lo sviluppo e i test. Per informazioni specifiche sul funzionamento di questo modulo, è possibile visualizzare il codice sorgente del sensore temperatura simulato.

Usare questi passaggi per distribuire il primo modulo.

  1. Accedere al portale di Azure e passare all'hub IoT.

  2. Dal menu a sinistra, in Gestione dispositivi selezionare Dispositivi.

  3. Selezionare l'ID dispositivo del dispositivo IoT Edge di destinazione dall'elenco.

    Quando si crea un nuovo dispositivo IoT Edge, viene visualizzato il codice di stato 417 -- The device's deployment configuration is not set nel portale di Azure. Questo stato è normale e significa che il dispositivo è pronto per ricevere una distribuzione del modulo.

  4. Sulla barra superiore selezionare Imposta moduli.

    Selezionare i moduli da eseguire nel dispositivo. È possibile scegliere tra i moduli creati manualmente o le immagini in un registro contenitori. In questo avvio rapido si distribuisce un modulo dal registro contenitori Microsoft.

  5. Nella sezione Moduli IoT Edge, selezionare Aggiungi e scegliere Modulo IoT Edge.

  6. Aggiornare le impostazioni del modulo seguenti:

    Impostazione valore
    Nome modulo IoT SimulatedTemperatureSensor
    URI immagine mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:latest
    Criterio di riavvio sempre
    Stato desiderato in esecuzione
  7. Selezionare Avanti: Route per continuare a configurare le route.

  8. Aggiungere una route che invia tutti i messaggi dal modulo temperatura simulata all'hub IoT.

    Impostazione valore
    Nome SimulatedTemperatureSensorToIoTHub
    valore FROM /messages/modules/SimulatedTemperatureSensor/* INTO $upstream
  9. Selezionare Avanti: Rivedi + Crea.

  10. Esaminare il file JSON e quindi selezionare Crea. Il file JSON definisce tutti i moduli distribuiti nel dispositivo IoT Edge.

    Note

    Quando si invia una nuova distribuzione a un dispositivo IoT Edge, non viene eseguito il push di alcun elemento al dispositivo. Al contrario, il dispositivo richiede periodicamente eventuali nuove istruzioni all'hub IoT. Se il dispositivo trova un manifesto della distribuzione aggiornato, usa le informazioni sulla nuova distribuzione per eseguire il pull delle immagini dei moduli dal cloud, quindi avvia l'esecuzione dei moduli in locale. Il processo potrebbe richiedere alcuni minuti.

Dopo aver creato i dettagli della distribuzione dei moduli, la procedura guidata torna nella pagina Dettagli dispositivo. Visualizzare lo stato della distribuzione nella scheda Moduli.

Dovrebbero essere visualizzati tre moduli: $edgeAgent, $edgeHub e SimulatedTemperatureSensor. Se uno o più moduli hanno in Specificato in distribuzione ma non in Segnalato da dispositivo, il dispositivo IoT Edge li sta ancora avviando. Attendere alcuni minuti e aggiornare la pagina.

Screenshot che mostra SimulatedTemperatureSensor nell'elenco dei moduli distribuiti.

Se si verificano problemi durante la distribuzione dei moduli, vedere Risolvere i problemi relativi ai dispositivi IoT Edge dal portale di Azure.

Visualizzare i dati generati

In questo avvio rapido si crea un nuovo dispositivo IoT Edge e si installa il runtime IoT Edge. Si usa quindi il portale di Azure per distribuire un modulo IoT Edge da eseguire nel dispositivo senza apportare modifiche al dispositivo stesso.

In questo caso il modulo di cui è stato eseguito il push crea i dati dell'ambiente di esempio che potranno essere usati successivamente per il test. Il sensore simulato monitora un macchinario e l'ambiente intorno al macchinario. Ad esempio, questo sensore può trovarsi in una sala server, nel piano di una fabbrica o in una turbina eolica. Il messaggio include la temperatura e l'umidità dell'ambiente, la temperatura e la pressione dell'apparecchiatura e un timestamp. Le esercitazioni di IoT Edge usano i dati creati da questo modulo come dati di test per le analisi.

Aprire il prompt dei comandi nel dispositivo IoT Edge o usare la connessione SSH dall'interfaccia della riga di comando di Azure. Verificare che il modulo distribuito dal cloud sia in esecuzione nel dispositivo IoT Edge:

sudo iotedge list

Screenshot che mostra tre moduli nel dispositivo.

Visualizzare i messaggi inviati dal modulo sensore temperatura:

sudo iotedge logs SimulatedTemperatureSensor -f

Screenshot che mostra i dati del modulo nella console di output.

Suggerimento

I comandi di IoT Edge distinguono maiuscole e minuscole quando si fa riferimento ai nomi dei moduli.

Pulire le risorse

Per continuare con le esercitazioni su IoT Edge, usare il dispositivo registrato e configurato in questo avvio rapido. In caso contrario, eliminare le risorse di Azure create per evitare addebiti.

Se la macchina virtuale e l'hub IoT sono stati creati in un nuovo gruppo di risorse, è possibile eliminare il gruppo e tutte le risorse associate. Controllare attentamente il contenuto del gruppo di risorse per assicurarsi che non siano presenti elementi da mantenere. Se non si vuole eliminare l'intero gruppo, è possibile eliminare le singole risorse.

Importante

L'eliminazione di un gruppo di risorse è irreversibile.

Eliminare il gruppo IoTEdgeResources. L'eliminazione di un gruppo di risorse potrebbe richiedere alcuni minuti.

az group delete --name IoTEdgeResources --yes

Verificare che il gruppo di risorse venga eliminato visualizzando l'elenco dei gruppi di risorse.

az group list

Passaggi successivi

In questa guida introduttiva è stato creato un dispositivo IoT Edge ed è stata usata l'interfaccia cloud di Azure IoT Edge per distribuire il codice nel dispositivo. Ora si usa un dispositivo di test che genera dati non elaborati relativi all'ambiente.

Nell'esercitazione successiva si apprenderà come monitorare l'attività e l'integrità del dispositivo dal portale di Azure.