Esercitazione: Configurare un dispositivo di Azure IoT Edge

Si applicaall'icona:sì 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. La configurazione del gateway trasparente consente ai dispositivi di connettersi all'hub IoT di Azure tramite il gateway senza riconoscerne l'esistenza. Allo stesso tempo, un utente può interagire con i dispositivi nell'hub IoT senza essere a conoscenza del dispositivo gateway intermedio. In definitiva, si aggiungerà l'analisi perimetrale 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 viene eseguito IoT Edge versione 1.1.

I passaggi di questo articolo vengono in genere eseguiti da sviluppatori cloud.

In questa sezione dell'esercitazione si apprende 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 Windows che simuli il dispositivo IoT Edge.

Prerequisiti

Questo articolo fa parte di una serie di documenti relativi a un'esercitazione sull'uso di Azure Machine Learning in IoT Edge. Ogni articolo della serie si basa sulle attività di quello precedente. Se si è arrivati direttamente a questo articolo, vedere il primo articolo della serie.

Creare i certificati

Per consentire a un dispositivo di funzionare 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. Nel caso illustrato si consente la connessione di un dispositivo IoT downstream a un dispositivo IoT Edge che funge da gateway trasparente. Per mantenere un livello di sicurezza ragionevole, il dispositivo downstream deve confermare l'identità del dispositivo IoT Edge. Per altre informazioni su come vengono usati i certificati dai dispositivi IoT Edge, vedere Dettagli di 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 Di Windows. Per comprendere cosa è stato automatizzato con l'immagine Docker, vedere Creare certificati demo per testare IoT Edge funzionalità del dispositivo.

  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. Aprire Visual Studio Code.

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

  6. Nel riquadro Esplora risorse 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 compilazione.

    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 ignorare per questa immagine.

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

    docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificates
    
  10. Docker richiederà l'accesso all'unità c:\ . Selezionare Share it (Condividila).

  11. Specificare le credenziali quando richiesto.

  12. Al termine dell'esecuzione del contenitore, verificare la presenza dei 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, verranno caricati i certificati in Azure Key Vault. Come si può vedere dall'elenco precedente, sono disponibili due tipi di file di certificato: PFX e PEM. Verrà trattato il file PFX come certificati di Key Vault da caricare in Key Vault. I file PEM sono testo normale e verranno trattati come segreti Key Vault. Verrà usata l'istanza di Key Vault associata all'area di lavoro di Azure Machine Learning creata eseguendo i notebook di Jupyter.

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

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

    Screenshot che mostra la copia del nome dell'insieme di credenziali delle chiavi.

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

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

  5. Lo script verrà eseguito per alcuni minuti con output che elenca le nuove voci Key Vault.

    Screenshot che mostra Key Vault output dello script.

Registrare un dispositivo IoT Edge

Per connettere un dispositivo di Azure IoT Edge a un hub IoT, viene prima registrato un dispositivo nell'hub. La stringa di connessione dell'identità del dispositivo nel cloud verrà usata 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 fisico IoT Edge modificando l'identità del dispositivo corrispondente in hub IoT.

Per questa esercitazione viene registrata la nuova identità del dispositivo usando Visual Studio Code. È anche possibile completare questi passaggi usando la portale di Azure o l'interfaccia della riga di comando di Azure. Qualsiasi metodo scelto, assicurarsi di ottenere la stringa di connessione del dispositivo IoT Edge dispositivo. 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 fotogramma hub IoT di Azuredalla visualizzazione Esplora codice di Visual Studio.

  3. Selezionare i puntini di sospensione e selezionare Crea IoT Edge Dispositivo.

  4. Assegnare un nome al dispositivo. Per praticità, viene usato il nome aaTurbofanEdgeDevice in modo che venga ordinato nella parte superiore dei dispositivi elencati.

  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

Viene usata 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 progetto iotedge-vm-deploy. Esegue il provisioning del dispositivo IoT Edge registrato nel passaggio precedente usando la stringa di connessione fornita nel modello.

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

Distribuire con Deploy to Azure Button

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

    Distribuire in Pulsante di Azure per iotedge-vm-deploy

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

    Campo Descrizione
    Sottoscrizione Sottoscrizione di Azure attiva in cui distribuire la macchina virtuale.
    Gruppo di risorse Un gruppo di risorse esistente o appena creato per contenere la macchina virtuale e le risorse associate.
    Prefisso etichetta DNS Valore obbligatorio della scelta usata per anteporre il nome host della macchina virtuale.
    Nome utente amministratore Nome utente, che verrà fornito privilegi radice per la distribuzione.
    Stringa di connessione del dispositivo Stringa di connessione del dispositivo per un dispositivo creato all'interno dell'hub IoT desiderato.
    Dimensioni macchina virtuale Dimensioni della macchina virtuale da distribuire
    Ubuntu OS Version (Versione sistema operativo Ubuntu) Versione del sistema operativo Ubuntu da installare nella macchina virtuale di base.
    Posizione 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 in base alle 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 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.

Stabilire la connessione 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 verrà visualizzato 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 hub IoT.

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

  1. Nella sessione SSH della 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 del dispositivo Microsoft e fornire un codice univoco. Questi passaggi possono essere eseguiti nel computer locale. Dopo aver completato l'autenticazione, chiudere la finestra del browser.

  3. Quando l'autenticazione viene completata correttamente, la VM Linux accede e visualizza l'elenco delle sottoscrizioni di Azure.

  4. Impostare la sottoscrizione di Azure da usare per i comandi dell'interfaccia della riga di comando di Azure.

    az account set --subscription <subscriptionId>
    
  5. Nella VM creare una directory per i certificati.

    sudo mkdir /edgeMlCertificates
    
  6. Scaricare i certificati archiviati nell'insieme di credenziali delle 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 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
  • Nome host: nome di dominio completo (FQDN) della macchina virtuale IoT Edge dispositivo

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 i certificati: riga non contenga spazi vuoti precedenti e che ognuno dei certificati annidati sia rientrato da due spazi.

    Fare clic con il pulsante destro del mouse su nano per incollare il contenuto degli Appunti 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. Nella 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 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 sugli errori.

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

Per altre informazioni sull'indirizzamento degli errori, vedere 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 di pulire tutte le risorse fino a completare l'esercitazione finale.

Passaggi successivi

È stata appena completata la configurazione di una macchina virtuale di Azure come gateway trasparente IoT Edge. È stata avviata la generazione di certificati di test caricati in Key Vault. Successivamente, è stato usato uno script e un modello di Resource Manager per distribuire la macchina virtuale con Ubuntu Server 16.04 LTS + Azure IoT Edge'immagine di runtime 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 certificati da Key Vault. Sono stati apportati diversi aggiornamenti alla configurazione del runtime IoT Edge aggiornando il file config.yaml.

Continuare con l'articolo successivo per creare i moduli IoT Edge.