Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:
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.
Accedere alla macchina virtuale di sviluppo.
Creare una nuova cartella con il percorso e il nome c:\edgeCertificates.
Se non è già in esecuzione, avviare Docker per Windows dal menu Start di Windows.
Apri Visual Studio Code.
Selezionare File>Apri cartella e quindi C:\source\IoTEdgeAndMlSample\CreateCertificates.
Nel riquadro Explorer fare clic con il pulsante destro del mouse su dockerfile e scegliere Compila immagine.
Nella finestra di dialogo accettare il valore predefinito per il nome e il tag dell'immagine: createcertificates: latest.
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.
Nella finestra del terminale di Visual Studio Code eseguire il contenitore createcertificates.
docker run --name createcertificates --rm -v c:\edgeCertificates:/edgeCertificates createcertificates /edgeCertificatesDocker richiederà l'accesso all'unità c:\ . Selezionare Condividi.
Specificare le credenziali quando richiesto.
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.
Dal portale di Azure passare all'area di lavoro di Azure Machine Learning.
Nella pagina di panoramica dell'area di lavoro di Machine Learning trovare il nome per Key Vault.
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>Se richiesto, accedere ad Azure.
Lo script verrà eseguito per alcuni minuti e produrrà un output che elenca le nuove voci nel 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.
Nel computer di sviluppo aprire Visual Studio Code.
Espandere il frame dell'hub IoT di Azure dalla visualizzazione Esplora di Visual Studio Code.
Selezionare i tre punti e selezionare Crea dispositivo IoT Edge.
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.
Il nuovo dispositivo viene visualizzato nell'elenco dei dispositivi.
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
Per usare il
iotedge-vm-deploymodello arm per distribuire la macchina virtuale Ubuntu 18.04 LTS, fare clic sul pulsante seguente: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. 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.
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.
Prendere nota del nome DNS della macchina virtuale. Sarà necessario per accedere alla macchina virtuale.
Connettersi al dispositivo IoT Edge
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>Quando viene richiesto di convalidare l'autenticità dell'host, immettere sì e selezionare INVIO.
Quando richiesto, specificare la password.
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.
Dalla sessione SSH nella macchina virtuale Linux accedere ad Azure con l'interfaccia della riga di comando di Azure.
az loginVerrà 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.
Dopo l'autenticazione, la macchina virtuale Linux accede e elenca le sottoscrizioni di Azure.
Imposta la sottoscrizione di Azure che desideri usare per i comandi CLI di Azure.
az account set --subscription <subscriptionId>Creare una directory nella macchina virtuale per i certificati.
sudo mkdir /edgeMlCertificatesScarica 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.
Aprire il file config.yaml.
sudo nano /etc/iotedge/config.yamlAggiornare 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.
Nel portale di Azure passare alla macchina virtuale. Copiare il nome DNS (FQDN del computer) dalla sezione Panoramica .
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'Salvare e chiudere il file selezionando CTRL+X, Y e INVIO.
Riavviare il daemon IoT Edge.
sudo systemctl restart iotedgeControllare 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.