Configurare Azure IoT Edge per Azure Sphere
Importante
Questa è la documentazione di Azure Sphere (legacy). Azure Sphere (legacy) viene ritirato il 27 settembre 2027 e gli utenti devono eseguire la migrazione ad Azure Sphere (integrato) entro questo periodo. Usare il selettore di versione posizionato sopra il sommario per visualizzare la documentazione di Azure Sphere (integrata).
Azure IoT Edge offre un livello di filtro e elaborazione dati tra un dispositivo downstream, ad esempio Azure Sphere e hub IoT di Azure. Prendere in considerazione l'uso di Azure IoT Edge se il dispositivo Azure Sphere produce una notevole quantità di dati o dati che richiedono post-elaborazione.
Questo argomento illustra i passaggi per configurare un dispositivo Azure IoT Edge con Azure Sphere. Azure Sphere supporta entrambe le versioni 1.1 e 1.2 di Azure IoT Edge; le differenze significative sono indicate nelle istruzioni. Le differenze principali sono:
- Il nome del pacchetto è cambiato da
iotedge
aaziot-edge
. - Il file di configurazione predefinito ha un nuovo nome e un nuovo percorso. In Azure IoT Edge 1.1 il file di configurazione era /etc/iotedge/config.yaml. In Azure IoT Edge 1.2 il file di configurazione è /etc/aziot/config.toml.
- Azure IoT Edge 1.2 richiede un nome di dominio completo (FQDN) accessibile tramite un server DNS nella rete.
Dopo aver completato le attività in questo argomento, il dispositivo Azure Sphere verrà configurato per inviare dati a un hub IoT di Azure tramite un dispositivo Azure IoT Edge che funge da gateway trasparente. È possibile aggiungere altri filtri ed elaborazioni dei dati con un modulo nel dispositivo Azure IoT Edge seguendo la guida al modulo Azure IoT Edge.
Operazioni preliminari
I passaggi descritti in questo argomento presuppongono che:
- Il dispositivo Azure Sphere è connesso al PC tramite USB.
- Che si abbia una sottoscrizione di Azure.
- È stata creata un'istanza di hub IoT di Azure ed è stato effettuato manualmente il provisioning di un dispositivo. Si noti che sarà necessario usare il certificato della CA tenant per il hub IoT più avanti nella procedura (passaggio 6).
- È stato creato un gruppo di risorse e tutte le risorse correlate ai servizi hub IoT di Azure e IoT Edge devono appartenere a questo gruppo di risorse.
Importante
Sebbene sia possibile creare una sottoscrizione di Azure senza alcun costo, il processo di iscrizione richiede l'immissione di un numero di carta di credito. Azure offre diversi livelli di servizio di sottoscrizione. Per impostazione predefinita, il livello Standard, che richiede un addebito mensile del servizio, viene selezionato quando si crea un'istanza di hub IoT di Azure. Per evitare l'addebito mensile, selezionare il livello gratuito. Il livello Gratuito include i servizi necessari per usare il dispositivo con un'istanza di hub IoT di Azure, incluso il dispositivo gemello. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Panoramica
La configurazione di un dispositivo Azure IoT Edge e la relativa configurazione per l'uso con un dispositivo Azure Sphere richiede un processo in più passaggi ed è consigliabile pianificare circa 8 ore per eseguire i passaggi, soprattutto se non si ha familiarità con Azure IoT Edge. Se è la prima volta che si usa Azure IoT Edge, seguire le istruzioni di avvio rapido in ogni sezione per configurare e configurare un dispositivo IoT Edge in esecuzione in una macchina virtuale Linux.
Questi passaggi devono essere completati una sola volta per ogni tenant di Azure Sphere e per dispositivo Azure IoT Edge; Tuttavia, ogni dispositivo Azure Sphere deve essere configurato manualmente in hub IoT di Azure e il dispositivo Azure IoT Edge deve essere impostato come padre del dispositivo Azure Sphere.
I passaggi di installazione possono essere suddivisi in tre raggruppamenti logici:
Creare e configurare il dispositivo IoT Edge come gateway trasparente
- Passaggio 1: Creare un dispositivo Azure IoT Edge.
- Passaggio 2. Configurare il dispositivo gateway Azure IoT Edge come server.
- Passaggio 3. Aprire le porte del dispositivo gateway Azure IoT Edge per la comunicazione.
- Passaggio 4. Aggiornare il nome host del gateway in config.toml (Azure IoT Edge versione 1.2) o config.yaml (Azure IoT Edge versione 1.1).
Configurare il dispositivo Azure Sphere in hub IoT di Azure
- Passaggio 5. Impostare il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere.
Stabilire una connessione attendibile tra il dispositivo Azure Sphere e il dispositivo IoT Edge
- Passaggio 6. Fornire il certificato della CA tenant del dispositivo Azure Sphere al dispositivo Azure IoT Edge.
- Passaggio 7. Fornire il certificato CA radice del dispositivo Azure IoT Edge al dispositivo Azure Sphere.
Passaggio 1: Creare un dispositivo Azure IoT Edge
È necessario configurare un dispositivo Azure IoT Edge e registrarlo con hub IoT di Azure, se non è già stato fatto.
È possibile usare il servizio Device Provisioning per effettuare il provisioning del dispositivo Azure IoT Edge. Tuttavia, non è possibile usare DPS per effettuare il provisioning del dispositivo Azure Sphere. Il provisioning automatico dei dispositivi downstream del dispositivo Azure IoT Edge con il servizio Device Provisioning hub IoT di Azure non è supportato.
È possibile seguire la procedura descritta nella guida introduttiva di IoT Edge per configurare un dispositivo Azure IoT Edge in esecuzione in una macchina virtuale Linux o in un dispositivo Windows e registrarlo con hub IoT di Azure.
Seguire la procedura descritta nella guida introduttiva per:
- Registrare un dispositivo Azure IoT Edge nell'istanza di hub IoT di Azure. Non creare un nuovo hub IoT in questo passaggio, è sufficiente registrare il dispositivo Azure IoT Edge nell'hub IoT già creato.
- Installare e avviare il runtime di Azure IoT Edge nel dispositivo Azure IoT Edge.
Nota
Nella guida introduttiva di IoT Edge arrestare prima di distribuire un modulo.
Passaggio 2. Configurare il dispositivo gateway IoT Edge come server
Seguire le istruzioni per configurare un dispositivo Azure IoT Edge per agire come gateway trasparente (Azure IoT Edge 1.2) o Azure IoT Edge 1.1, ma arrestarsi quando si raggiunge la sezione "Aprire porte nel dispositivo gateway". Anche se queste istruzioni indicano di copiare i file di certificato nel dispositivo IoT Edge, non copiare i file nella macchina virtuale fino al passaggio 8 di questa procedura.
Come parte dei passaggi completati per configurare il gateway dispositivo come server, si avrà già:
- Configurare i certificati del dispositivo Azure IoT Edge.
- È stato distribuito il modulo hub di Azure IoT Edge.
- Configurazione del routing dei messaggi tramite Azure IoT Edge.
Inoltre, come parte di questi passaggi, saranno stati creati questi certificati:
- Certificato CA radice:
certs/azure-iot-test-only.root.ca.cert.pem
- Certificato ca del dispositivo e chiave privata (usato per registrare il dispositivo IoT Edge nel hub IoT):
certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
private/iot-edge-device-identity-<cert-name>.key.pem
- Certificato e chiave privata della CA di IoT Edge (da copiare in un dispositivo IoT Edge e a cui si fa riferimento nel file di configurazione):
certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
private/iot-edge-device-ca-<cert-name>.key.pem
Se si segue la guida introduttiva, usare le istruzioni di Linux per configurare i certificati demo se il computer in cui si generano i certificati è un computer basato su Linux. Usare le istruzioni di Windows per generare i certificati demo se il computer in cui si generano i certificati è un computer basato su Windows. Vedere la sezione per copiare i certificati radice in una macchina virtuale Linux o in un computer Windows locale.
Il certificato ca radice di Azure IoT Edge verrà modificato nel passaggio 7, ma sarà necessario il certificato originale nel passaggio 8. Conservare una copia del certificato originale in modo da poterlo riutilizzare.
Nota
Quando si aggiorna la sezione dei certificati del file config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1), assicurarsi che la certificates:
riga nel file config.toml (Azure IoT Edge 1.2) o config.yaml (Azure IoT Edge 1.1) non abbia spazi vuoti precedenti e che ognuno dei certificati annidati sia rientrato da due spazi.
Dopo aver aggiornato il file, verificare che il modulo edgehub sia in esecuzione nel dispositivo Azure IoT Edge:
sudo iotedge list
Per altre informazioni, vedere Come usare un dispositivo IoT Edge come gateway (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.
Se si usano certificati di test, arrestarsi prima di generare il certificato del dispositivo downstream, come documentato in Creare certificati dispositivo downstream (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.
Passaggio 3. Aprire le porte del dispositivo gateway Azure IoT Edge per la comunicazione
I dispositivi gateway devono essere in grado di ricevere messaggi dai dispositivi downstream. Per il funzionamento di uno scenario gateway, almeno uno dei protocolli supportati dell'hub IoT deve essere aperto per il traffico in ingresso dai dispositivi downstream.
Azure Sphere usa il protocollo MQTT. Questo protocollo usa la porta 8883.
Per altre informazioni, vedere Aprire le porte nel dispositivo gateway (Azure IoT Edge 1.2) o Azure IoT Edge 1.1.
Seguire questa procedura per aprire la porta 8883 in una macchina virtuale Windows dopo aver configurato un dispositivo Edge nella guida introduttiva:
- Se necessario, accedere al portale di Azure usando l'account Azure.
- Passare alla macchina virtuale creata nella sezione Passaggio 1: Creare un dispositivo Azure IoT Edge.
- Nella sezione Impostazioni a sinistra selezionare Rete, quindi Aggiungi regola porta in ingresso.
- Nel pannello Aggiungi regola porta in ingresso, in Intervalli di porte di destinazione modificare il valore in 8883.
- In Protocollo selezionare TCP.
- In Nome modificare il valore in MQTT.
- Lasciare tutte le altre impostazioni come predefinite e quindi selezionare Aggiungi.
Seguire questa procedura per aprire la porta 8883 in una macchina virtuale Linux dopo aver configurato un dispositivo Azure IoT Edge nella guida introduttiva:
Eseguire il comando seguente per verificare se la porta per MQTT è aperta:
sudo netstat -lptu
Se necessario, usare il comando seguente per aprire la porta:
sudo ufw allow 8883
Verrà definita una regola di sicurezza in ingresso per consentire la comunicazione per il protocollo MQTT al gateway Azure IoT Edge.
Passaggio 4. Aggiornare il nome host del gateway
Questo passaggio usa procedure diverse a seconda della versione di Azure IoT Edge in uso: Azure IoT Edge 1.2 o Azure IoT Edge 1.1.
Azure IoT Edge 1.2: aggiornare il nome host del gateway in config.toml
Il runtime di Azure IoT Edge supporta nomi host con meno di 64 caratteri. I computer fisici in genere non hanno nomi host lunghi, ma se si usa una macchina virtuale come dispositivo Azure IoT Edge, come nell'esempio nella guida introduttiva, è necessario configurare manualmente il nome host.
Per risolvere i problemi relativi a un nome host non valido, vedere risoluzioni comuni degli errori.
Seguire questa procedura per configurare il nome host del dispositivo Azure IoT Edge dopo aver configurato la porta MQTT nella guida introduttiva:
Trovare il nome di dominio completo (FQDN) per il gateway IoT Edge passando al dispositivo IoT Edge (VM Linux) nel portale di Azure e copiando il valore per il nome DNS dalla pagina di panoramica.
Se necessario, accedere al dispositivo Azure IoT Edge.
Aprire il file config.toml in un editor di testo.
/etc/aziot/config.toml
Incollare il nome di dominio completo nella sezione nome host di config.toml. Assicurarsi che il nome sia tutto in minuscolo.
hostname: "<iotedge_machinename>.<mydomain>"
Nota
Per impostazione predefinita con Azure IoT Edge v1.2 e versioni successive, il nome host DEVE essere un nome FQDN (un indirizzo IP non è più consentito, come nella versione 1.1). Pertanto, è obbligatorio un server DNS con il record A appropriato nella stessa rete.
Riavviare il daemon
iotedge
.sudo systemctl restart iotedge
Se vengono visualizzati errori (testo colorato preceduto da "[ERROR]") nello stato, esaminare i log del daemon per informazioni dettagliate sull'errore.
sudo journalctl -u iotedge --no-pager --no-full
Per evitare avvisi, configurare la configurazione DNS per i moduli nel dispositivo Azure IoT Edge per includere un file di configurazione in /etc/docker/daemon.json, ad esempio:
{ "dns": ["<IP address of your DNS server>"] }
Azure IoT Edge 1.1: aggiornare il nome host del gateway in config.yaml
Il runtime di Azure IoT Edge supporta nomi host con meno di 64 caratteri. I computer fisici in genere non hanno nomi host lunghi, ma se si usa una macchina virtuale come dispositivo Azure IoT Edge, come nell'esempio nella guida introduttiva, è necessario configurare manualmente il nome host.
Per risolvere i problemi relativi a un nome host non valido, vedere risoluzioni comuni degli errori.
Seguire questa procedura per configurare il nome host del dispositivo Azure IoT Edge dopo aver configurato la porta MQTT nella guida introduttiva:
Nel portale di Azure passare alla macchina virtuale. Copiare il valore per il nome DNS (FQDN del computer) dalla sezione Panoramica .
Se necessario, accedere al dispositivo Azure IoT Edge.
Aprire il file config.yaml in un editor di testo.
/etc/iotedge/config.yaml
Incollare il nome di dominio completo nella sezione nome host di config.yaml. Assicurarsi che il nome sia tutto in minuscolo.
`hostname: "<machinename>.<region>.cloudapp.azure.com"`
Nota
Potrebbe essere necessario usare il nome del computer bare per il nome host (l'indirizzo IP o il nome host effettivo) se un resolver DNS si trova in rete, poiché Azure Sphere non supporta netbios.
Riavviare il daemon
iotedge
.sudo systemctl restart iotedge
Se vengono visualizzati errori (testo colorato preceduto da "[ERROR]") nello stato, esaminare i log del daemon per informazioni dettagliate sull'errore.
sudo journalctl -u iotedge --no-pager --no-full
Per evitare avvisi, configurare la configurazione DNS per i moduli nel dispositivo Azure IoT Edge per includere un file di configurazione in /etc/docker/daemon.json, ad esempio:
{ "dns": ["<IP address of your DNS server>"] }
Passaggio 5. Impostare il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere
Seguire questa procedura per impostare il dispositivo Azure IoT Edge come padre del dispositivo Azure Sphere:
- Passare al dispositivo Azure Sphere di cui è stato effettuato il provisioning manuale.
- Selezionare ID dispositivo.
- Selezionare l'icona a forma di ingranaggio in Nessun dispositivo padre.
- Selezionare il dispositivo Azure IoT Edge da impostare come padre.
- Selezionare OK, quindi Salva.
Il dispositivo Azure IoT Edge diventa ora l'elemento padre del dispositivo Azure Sphere.
Passaggio 6. Fornire il certificato della CA tenant del dispositivo Azure Sphere al dispositivo IoT Edge
Per verificare i certificati dei dispositivi Azure Sphere, il dispositivo Azure IoT Edge deve avere una propria copia della CA tenant.
Scaricare il certificato della CA tenant, se non è già stato fatto. Nota: è necessario aver già completato questa operazione durante la configurazione del hub IoT di Azure.
Dal prompt dei comandi accedere con l'account di accesso di Azure Sphere:
azsphere login
Scaricare il certificato della CA per il tenant di Azure Sphere. Questo comando scarica il certificato in un file denominato CAcertificate.cer nella directory di lavoro corrente. Assicurarsi di scaricare il file in una directory in cui si dispone dell'autorizzazione di scrittura oppure l'operazione di download avrà esito negativo. Il file di output deve avere un'estensione .cer.
- Interfaccia della riga di comando di Azure Sphere
- Interfaccia della riga di comando classica di Azure Sphere
azsphere ca-certificate download --destination CAcertificate.cer
Convertire il certificato ca tenant in formato PEM. Le istruzioni di esempio per la conversione del formato in un computer Windows sono le seguenti:
- Individuare il percorso del certificato nel computer e fare doppio clic sul certificato per aprirlo.
- Aprire la scheda Dettagli e selezionare Copia nel file.
- Nell'Esportazione guidata certificati selezionare Avanti.
- Selezionare il formato X.509 (CER) con codifica Base 64, quindi selezionare Avanti.
- Immettere il nome del file per il certificato da esportare e quindi selezionare Avanti.
- Selezionare Fine per completare la procedura guidata.
- Rinominare il file del certificato scaricato in modo che abbia l'estensione pem.
Aggiungere il certificato del tenant al certificato radice di Azure IoT Edge. Tenere presente che sono stati creati i certificati di Azure IoT Edge nel passaggio 2.
- Se necessario, accedere al dispositivo Azure IoT Edge.
- Individuare il percorso del certificato CA radice del dispositivo IoT Edge e aprirlo in un editor di testo. Se è stata seguita la guida introduttiva, sono stati usati gli script forniti nel repository Git di Azure IoT Edge per creare certificati demo, il certificato CA radice è denominato azure-iot-test-only.root.ca.cert.pem.
- Aprire il certificato ca del tenant di Azure Sphere (in formato PEM) in un editor di testo. Copiare il contenuto e incollarlo alla fine del certificato CA radice di IoT Edge.
- Salvare le modifiche apportate al certificato CA radice di Azure IoT Edge e quindi chiudere il file.
- Riavviare il dispositivo Azure IoT Edge. Per un dispositivo Linux Azure IoT Edge, eseguire:
sudo systemctl restart iotedge
. - Verificare che i moduli siano in esecuzione nel dispositivo Azure IoT Edge. Per un dispositivo Linux Azure IoT Edge, eseguire:
sudo iotedge list
.
Passaggio 7. Fornire il certificato CA radice del dispositivo Azure IoT Edge al dispositivo Azure Sphere
Per verificare i certificati del dispositivo Azure IoT Edge, il dispositivo Azure Sphere (dispositivo downstream) deve avere la propria copia del certificato CA radice del dispositivo Azure IoT Edge configurato nel passaggio 2.
Per altre informazioni, vedere Connettere un dispositivo downstream a un gateway Azure IoT Edge.
Individuare il certificato radice del dispositivo Azure IoT Edge originale.
- Tenere presente che il certificato radice del dispositivo Azure IoT Edge originale è quello creato nel passaggio 2.
- Se è stata seguita la guida introduttiva e sono stati usati gli script forniti nel repository Git di IoT Edge per creare certificati demo, il certificato CA radice è denominato azure-iot-test-only.root.ca.cert.pem.
Copiare il certificato radice di Azure IoT Edge nel dispositivo Azure Sphere aggiungendolo al pacchetto dell'applicazione.
- Per i passaggi dettagliati, vedere Creazione di pacchetti immagine.
- Vedere la sezione per copiare i certificati radice in una macchina virtuale Linux o in un computer Windows locale.
Passaggio 8. Copiare il certificato radice IoT in un computer remoto
Seguire questa procedura per copiare il certificato radice di Azure IoT Edge in una macchina virtuale Linux remota o in un computer Windows locale:
È possibile installare lo strumento WinSCP per trasferire i file. Lo strumento fornisce un'interfaccia utente grafica in modo che sia più facile da usare rispetto a un approccio da riga di comando.
Per usare la riga di comando, usare lo strumento da riga di comando SCP (Secure Copy).
Per trasferire un file da un computer Windows locale a una macchina virtuale Linux remota, eseguire il comando seguente in Windows PowerShell:
powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
Sintassi di esempio:
scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/
Per trasferire un file da una macchina virtuale Linux remota a un computer Windows locale, eseguire il comando seguente in Windows PowerShell:
powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
Sintassi di esempio:
scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\
Risoluzione dei problemi
Se si verificano problemi durante l'esecuzione di Azure IoT Edge nell'ambiente in uso, usare questi articoli per la risoluzione dei problemi e la diagnostica:
Risolvere i problemi del dispositivo IoT Edge (Azure IoT Edge 1.2) o Azure IoT Edge 1.1
Problemi e soluzioni comuni per Azure IoT Edge (Azure IoT Edge 1.2) o Azure IoT Edge 1.1