Condividi tramite


Esercitazione: Configurare un dispositivo Azure IoT Edge

Si applica a:Icona di conferma IoT Edge 1.1

Importante

IoT Edge 1.1 data di fine del supporto è stata il 13 dicembre 2022. Controlla il ciclo di vita dei prodotti Microsoft per ottenere informazioni sul modo in cui viene supportato questo prodotto, servizio, tecnologia o API. Per altre informazioni sull'aggiornamento alla versione più recente di IoT Edge, vedere Aggiornare IoT Edge.

In questo articolo viene configurata una macchina virtuale di Azure che esegue Linux come dispositivo Azure IoT Edge che funge da gateway trasparente. Una configurazione del gateway trasparente consente ai dispositivi di connettersi all'hub IoT di Azure tramite il gateway senza sapere che il gateway esiste. Allo stesso tempo, un utente che interagisce con i dispositivi nell'hub IoT non è a conoscenza del dispositivo gateway intermedio. In definitiva, si aggiungeranno analisi perimetrali al sistema aggiungendo moduli IoT Edge al gateway trasparente.

Nota

I concetti di questa esercitazione si applicano a tutte le versioni di IoT Edge, ma il dispositivo di esempio creato per provare lo scenario esegue IoT Edge versione 1.1.

I passaggi descritti in questo articolo vengono in genere eseguiti da uno sviluppatore cloud.

In questa sezione dell'esercitazione si apprenderà come:

  • Creare certificati per consentire al dispositivo gateway di connettersi in modo sicuro ai dispositivi downstream.
  • Creare un dispositivo IoT Edge.
  • Creare una macchina virtuale di Azure per simulare il dispositivo IoT Edge.

Prerequisiti

Questo articolo fa parte di una serie di esercitazioni sull'uso di Azure Machine Learning in IoT Edge. Ogni articolo della serie si basa sul lavoro dell'articolo precedente. Se sei arrivato direttamente a questo articolo, vedi il primo articolo della serie.

Creare certificati

Affinché un dispositivo funzioni come gateway, deve connettersi in modo sicuro ai dispositivi downstream. Con IoT Edge è possibile usare un'infrastruttura a chiave pubblica (PKI) per configurare connessioni sicure tra i dispositivi. In questo caso, si consente a un dispositivo IoT downstream di connettersi a un dispositivo IoT Edge che funge da gateway trasparente. Per mantenere una sicurezza ragionevole, il dispositivo downstream deve confermare l'identità del dispositivo IoT Edge. Per altre informazioni su come i dispositivi IoT Edge usano i certificati, vedere Dettagli sull'utilizzo dei certificati di Azure IoT Edge.

In questa sezione vengono creati i certificati autofirmato usando un'immagine Docker che viene quindi compilata ed eseguita. È stato scelto di usare un'immagine Docker per completare questo passaggio perché riduce il numero di passaggi necessari per creare i certificati nel computer di sviluppo Windows. Per comprendere cosa è stato automatizzato con l'immagine Docker, vedere Creare certificati demo per testare le funzionalità dei dispositivi IoT Edge.

  1. Accedere alla macchina virtuale di sviluppo.

  2. Creare una nuova cartella con il percorso e il nome c:\edgeCertificates.

  3. Se non è già in esecuzione, avviare Docker per Windows dal menu Start di Windows.

  4. Apri Visual Studio Code.

  5. Selezionare File>Apri cartella e quindi C:\source\IoTEdgeAndMlSample\CreateCertificates.

  6. Nel riquadro Explorer fare clic con il pulsante destro del mouse su dockerfile e scegliere Compila immagine.

  7. Nella finestra di dialogo accettare il valore predefinito per il nome e il tag dell'immagine: createcertificates: latest.

    Screenshot che mostra la creazione di certificati in Visual Studio Code.

  8. Attendere il completamento del processo di costruzione.

    Nota

    Potrebbe essere visualizzato un avviso relativo a una chiave pubblica mancante. È sicuro ignorare questo avviso. Analogamente, verrà visualizzato un avviso di sicurezza che consiglia di controllare o reimpostare le autorizzazioni per l'immagine, che è sicuro da ignorare per questa immagine.

  9. Nella finestra del terminale di Visual Studio Code eseguire il contenitore createcertificates.

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker richiederà l'accesso all'unità c:\ . Selezionare Condividi.

  11. Specificare le credenziali quando richiesto.

  12. Al termine dell'esecuzione del contenitore, cercare i file seguenti in c:\edgeCertificates:

    • c:\edgeCertificates\certs\azure-iot-test-only.root.ca.cert.pem
    • c:\edgeCertificates\certs\new-edge-device-full-chain.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pem
    • c:\edgeCertificates\certs\new-edge-device.cert.pfx
    • c:\edgeCertificates\private\new-edge-device.key.pem

Caricare i certificati in Azure Key Vault

Per archiviare i certificati in modo sicuro e renderli accessibili da più dispositivi, i certificati verranno caricati in Azure Key Vault. Come si può vedere dall'elenco precedente, sono disponibili due tipi di file di certificato: PFX e PEM. Il file PFX verrà trattato come certificati di Key Vault da caricare in Key Vault. I file PEM sono testo normale e li considereremo come segreti di Key Vault. Utilizzeremo l'istanza di Key Vault associata all'area di lavoro di Azure Machine Learning creata eseguendo i notebook di Jupyter.

  1. Dal portale di Azure passare all'area di lavoro di Azure Machine Learning.

  2. Nella pagina di panoramica dell'area di lavoro di Machine Learning trovare il nome per Key Vault.

    Screenshot che mostra come copiare il nome dell'insieme di credenziali.

  3. Nel computer di sviluppo caricare i certificati in Key Vault. Sostituire <subscriptionId> e <keyvaultname> con le informazioni sulla risorsa.

    c:\source\IoTEdgeAndMlSample\CreateCertificates\upload-keyvaultcerts.ps1 -SubscriptionId <subscriptionId> -KeyVaultName <keyvaultname>
    
  4. Se richiesto, accedere ad Azure.

  5. Lo script verrà eseguito per alcuni minuti e produrrà un output che elenca le nuove voci nel Key Vault.

    Screenshot che mostra l'output dello script di Key Vault.

Registrare un dispositivo IoT Edge

Per connettere un dispositivo Azure IoT Edge a un hub IoT, registrare prima un dispositivo nell'hub. Prendiamo la stringa di connessione dall'identità del dispositivo nel cloud e la usiamo per configurare il runtime nel dispositivo IoT Edge. Dopo che un dispositivo configurato si connette all'hub, è possibile distribuire moduli e inviare messaggi. È anche possibile modificare la configurazione del dispositivo IoT Edge fisico modificando l'identità del dispositivo corrispondente nell'hub IoT.

Per questa esercitazione si registra la nuova identità del dispositivo usando Visual Studio Code. È anche possibile completare questi passaggi usando il portale di Azure o l'interfaccia della riga di comando di Azure. Indipendentemente dal metodo scelto, assicurarsi di ottenere la stringa di connessione del dispositivo IoT Edge. La stringa di connessione del dispositivo è disponibile nella pagina dei dettagli del dispositivo nel portale di Azure.

  1. Nel computer di sviluppo aprire Visual Studio Code.

  2. Espandere il frame dell'hub IoT di Azure dalla visualizzazione Esplora di Visual Studio Code.

  3. Selezionare i tre punti e selezionare Crea dispositivo IoT Edge.

  4. Assegnare un nome al dispositivo. Per praticità, usiamo il nome aaTurbofanEdgeDevice in modo che venga ordinato all'inizio dei dispositivi elencati.For convenience, we use the name aaTurbofanEdgeDevice so that it sorts to the top of listed devices.

  5. Il nuovo dispositivo viene visualizzato nell'elenco dei dispositivi.

    Screenshot che mostra una visualizzazione del dispositivo in Visual Studio Code Explorer.

Distribuire una macchina virtuale di Azure

Si usa una macchina virtuale Ubuntu 18.04 LTS con il runtime di Azure IoT Edge installato e configurato. La distribuzione usa un modello di Azure Resource Manager gestito nel repository di progetti iotedge-vm-deploy . Esegue il provisioning del dispositivo IoT Edge registrato nel passaggio precedente usando la stringa di connessione specificata nel modello.

È possibile distribuire la macchina virtuale usando il portale di Azure o l'interfaccia della riga di comando di Azure. Verranno illustrati i passaggi del portale di Azure. Per altre informazioni, vedere Eseguire Azure IoT Edge in macchine virtuali Ubuntu .

Eseguire la distribuzione con il pulsante Distribuisci in Azure

  1. Per usare il iotedge-vm-deploy modello arm per distribuire la macchina virtuale Ubuntu 18.04 LTS, fare clic sul pulsante seguente:

    Pulsante Distribuisci su Azure per iotedge-vm-deploy

  2. Nella finestra appena avviata compilare i campi modulo disponibili.

    Campo Descrizione
    Abbonamento Sottoscrizione Azure attiva su cui distribuire la macchina virtuale.
    Gruppo di risorse Gruppo di risorse esistente o appena creato per contenere la macchina virtuale e le risorse associate.
    Prefisso etichetta DNS Un valore obbligatorio a tua scelta usato per anteporre al nome host della macchina virtuale.
    Nome utente amministratore Un nome utente al quale verranno concessi privilegi di amministratore durante la distribuzione.
    Stringa di connessione del dispositivo Una stringa di connessione del dispositivo per un dispositivo creato nell'hub IoT previsto.
    Dimensioni macchina virtuale Dimensioni della macchina virtuale da distribuire
    Versione del sistema operativo Ubuntu Versione del sistema operativo Ubuntu da installare nella macchina virtuale di base.
    Ubicazione L'area geografica in cui distribuire la macchina virtuale, questo valore viene impostato per impostazione predefinita sulla posizione del gruppo di risorse selezionato.
    Tipo di autenticazione Scegliere sshPublicKey o password a seconda delle preferenze.
    Admin Password or Key (Chiave o password amministratore) Valore della chiave pubblica SSH o del valore della password a seconda della scelta del tipo di autenticazione.
  3. Dopo aver compilato tutti i campi, selezionare la casella di controllo nella parte inferiore della pagina per accettare i termini e selezionare Rivedi e crea e Crea per avviare la distribuzione.

  4. Passare alla tua macchina virtuale nel portale di Azure. È possibile trovarla tramite il gruppo di risorse o selezionando Macchine virtuali in Servizi di Azure nella pagina di destinazione del portale.

  5. Prendere nota del nome DNS della macchina virtuale. Sarà necessario per accedere alla macchina virtuale.

Connettersi al dispositivo IoT Edge

  1. Aprire un prompt dei comandi e usare il comando seguente per accedere alla macchina virtuale. Immettere le proprie informazioni per nome utente e nome DNS in base alla sezione precedente.

    ssh <adminUsername>@<DNS_name>
    
  2. Quando viene richiesto di convalidare l'autenticità dell'host, immettere e selezionare INVIO.

  3. Quando richiesto, specificare la password.

  4. Ubuntu visualizza un messaggio di benvenuto e poi dovrebbe apparire un prompt simile a <username>@<machinename>:~$.

Scaricare i certificati di Key Vault

In precedenza in questo articolo sono stati caricati i certificati in Key Vault per renderli disponibili per il dispositivo IoT Edge e il dispositivo downstream. Il dispositivo downstream usa il dispositivo IoT Edge come gateway per comunicare con l'hub IoT.

Il dispositivo downstream verrà affrontato più avanti nell'esercitazione. In questa sezione scaricare i certificati nel dispositivo IoT Edge.

  1. Dalla sessione SSH nella macchina virtuale Linux accedere ad Azure con l'interfaccia della riga di comando di Azure.

    az login
    
  2. Verrà richiesto di aprire un browser a una pagina di accesso al dispositivo Microsoft e fornire un codice univoco. È possibile eseguire questi passaggi nel computer locale. Chiudere la finestra del browser al termine dell'autenticazione.

  3. Dopo l'autenticazione, la macchina virtuale Linux accede e elenca le sottoscrizioni di Azure.

  4. Imposta la sottoscrizione di Azure che desideri usare per i comandi CLI di Azure.

    az account set --subscription <subscriptionId>
    
  5. Creare una directory nella macchina virtuale per i certificati.

    sudo mkdir /edgeMlCertificates
    
  6. Scarica i certificati che hai archiviato nell'archivio di chiavi: new-edge-device-full-chain.cert.pem, new-edge-device.key.pem e azure-iot-test-only.root.ca.cert.pem.

    key_vault_name="<key vault name>"
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-full-chain-cert-pem -f /edgeMlCertificates/new-edge-device-full-chain.cert.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name new-edge-device-key-pem -f /edgeMlCertificates/new-edge-device.key.pem
    sudo az keyvault secret download --vault-name $key_vault_name --name azure-iot-test-only-root-ca-cert-pem -f /edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem
    

Aggiornare la configurazione del dispositivo IoT Edge

Il runtime di IoT Edge usa il file /etc/iotedge/config.yaml per rendere persistente la configurazione. È necessario aggiornare due informazioni in questo file:

  • Certificati: certificati da usare per le connessioni effettuate con dispositivi downstream
  • Hostname: nome di dominio completo (FQDN) del dispositivo IoT Edge della VM

Aggiornare i certificati e il nome host modificando direttamente il file config.yaml.

  1. Aprire il file config.yaml.

    sudo nano /etc/iotedge/config.yaml
    
  2. Aggiornare la sezione certificates del file config.yaml rimuovendo il percorso iniziale # e impostando il percorso in modo che il file sia simile all'esempio seguente:

    certificates:
      device_ca_cert: "/edgeMlCertificates/new-edge-device-full-chain.cert.pem"
      device_ca_pk: "/edgeMlCertificates/new-edge-device.key.pem"
      trusted_ca_certs: "/edgeMlCertificates/azure-iot-test-only.root.ca.cert.pem"
    

    Assicurarsi che la riga certificati: la riga non contenga spazi vuoti precedenti e che ogni certificato annidato sia rientrato da due spazi.

    Con un clic destro su nano, il contenuto degli appunti verrà incollato nella posizione corrente del cursore. Per sostituire la stringa, usare le frecce della tastiera per passare alla stringa da sostituire, eliminare la stringa e quindi fare clic con il pulsante destro del mouse per incollare dal buffer.

  3. Nel portale di Azure passare alla macchina virtuale. Copiare il nome DNS (FQDN del computer) dalla sezione Panoramica .

  4. Incollare il nome di dominio completo nella sezione nome host del file config.yml. Assicurarsi che il nome sia tutto in minuscolo.

    hostname: '<machinename>.<region>.cloudapp.azure.com'
    
  5. Salvare e chiudere il file selezionando CTRL+X, Y e INVIO.

  6. Riavviare il daemon IoT Edge.

    sudo systemctl restart iotedge
    
  7. Controllare lo stato del daemon IoT Edge. Dopo il comando, immettere :q per uscire.

    systemctl status iotedge
    

Risoluzione dei problemi

Se vengono visualizzati errori (testo colorato preceduto da "[ERROR]") nello stato, esaminare i log del daemon per informazioni dettagliate sull'errore.

journalctl -u iotedge --no-pager --no-full

Per altre informazioni su come affrontare gli errori, consulta la pagina relativa alla risoluzione dei problemi.

Pulire le risorse

Questa esercitazione fa parte di un set in cui ogni articolo si basa sul lavoro svolto nei precedenti. Attendere a pulire le risorse fino al completamento dell'esercitazione finale.

Passaggi successivi

È stata completata la configurazione di una macchina virtuale di Azure come gateway trasparente IoT Edge. Abbiamo iniziato generando certificati di test che abbiamo caricato in Key Vault. Successivamente, è stato usato uno script e un modello di Resource Manager per distribuire la macchina virtuale con l'immagine di runtime Ubuntu Server 16.04 LTS + Azure IoT Edge da Azure Marketplace. Con la macchina virtuale in esecuzione, è stata stabilita la connessione tramite SSH. È stato quindi eseguito l'accesso ad Azure e sono stati scaricati i certificati da Key Vault. Sono stati apportati diversi aggiornamenti alla configurazione del runtime di IoT Edge aggiornando il file config.yaml.

Continuare con l'articolo successivo per compilare moduli IoT Edge.