Creare ed effettuare il provisioning di un dispositivo IoT Edge per Linux in Windows su larga scala usando un TPM
Si applica a: IoT Edge 1.1
Importante
La data di fine del supporto di IoT Edge 1.1 è 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.
Questo articolo fornisce istruzioni per il provisioning automatico di un dispositivo Azure IoT Edge per Linux in Windows usando un modulo TPM (Trusted Platform Module). È possibile effettuare automaticamente il provisioning di dispositivi Azure IoT Edge con servizio Device Provisioning in hub IoT di Azure. Se non si ha familiarità con il processo di provisioning automatico, vedere la panoramica sul provisioning prima di continuare.
Questo articolo illustra due metodologie. Selezionare la propria preferenza in base all'architettura della soluzione:
- Provisioning automatico di un dispositivo Linux in Windows con hardware TPM fisico.
- Eseguire il provisioning automatico di un dispositivo Linux in Windows usando un TPM simulato. È consigliabile usare questa metodologia solo come scenario di test. Un TPM simulato non offre la stessa sicurezza di un TPM fisico.
Le attività sono le seguenti:
- Istallare IoT Edge per Linux in Windows.
- Recuperare le informazioni del TPM dal dispositivo.
- Creare una singola registrazione per il dispositivo.
- Effettuare il provisioning del dispositivo con le informazioni del TPM.
Prerequisiti
Risorse cloud
- Un hub IoT attivo
- Un'istanza del servizio Device Provisioning in Hub IoT in Azure, collegata all'hub IoT
- Se non si dispone di un'istanza del servizio Device Provisioning, è possibile seguire le istruzioni riportate nelle sezioni Creare una nuova istanza del servizio Device Provisioning in hub IoT e Collegare l'hub IoT e il servizio Device Provisioning dell'argomento di avvio rapido sul servizio Device Provisioning in hub IoT.
- Con il servizio Device Provisioning in esecuzione, copiare il valore di Ambito ID dalla pagina di panoramica. Questo valore viene usato quando si configura il runtime IoT Edge.
Requisiti dei dispositivi
Un dispositivo Windows con i requisiti minimi seguenti:
Requisiti di sistema
- Windows 101/11 (Pro, Enterprise, IoT Enterprise)
- Windows Server 20191/2022
1 Gli utenti di Windows 10 e Windows Server 2019 devono usare la build minima 17763 con tutti gli aggiornamenti cumulativi correnti installati.
Requisiti hardware
- Memoria minima disponibile: 1 GB
- Spazio disponibile su disco minimo: 10 GB
Supporto virtualizzazione
- In Windows 10, abilitare Hyper-V. Per ulteriori informazioni, vedere Installare Hyper-V Server 10.
- In Windows Server, installare il ruolo Hyper-V e creare un commutatore di rete predefinito. Per altre informazioni, vedere Virtualizzazione annidata per Azure IoT Edge per Linux in Windows.
- In una macchina virtuale, configurare la virtualizzazione annidata. Per altre informazioni, vedere Virtualizzazione annidata.
Supporto per la rete
- Windows Server non è dotato di un commutatore predefinito. Prima di poter distribuire EFLOW in un dispositivo Windows Server, è necessario creare un commutatore virtuale. Per altre informazioni, vedere Creare un commutatore virtuale per Linux in Windows.
- Le versioni desktop di Windows sono dotate di un commutatore predefinito che può essere utilizzato per l'installazione di EFLOW. Se necessario, è possibile creare un commutatore virtuale personalizzato.
Suggerimento
Se si vogliono usare moduli Linux con accelerazione GPU nella distribuzione di Azure IoT Edge per Linux in Windows, sono disponibili varie opzioni di configurazione.
Sarà necessario installare i driver corretti in base all'architettura della GPU e può essere necessario accedere a una build del Programma Windows Insider. Per determinare le esigenze di configurazione e soddisfare questi prerequisiti, vedere Accelerazione della GPU per Azure IoT Edge per Linux in Windows.
Assicurarsi di soddisfare subito i prerequisiti per l'accelerazione GPU. Se si decide per l'accelerazione GPU durante l'installazione, sarà necessario riavviare tale processo.
Strumenti di sviluppo
È possibile usare PowerShell o Windows Admin Center per gestire i dispositivi IoT Edge. Ogni utilità ha i propri prerequisiti:
Se si vuole usare PowerShell, seguire questa procedura per preparare il dispositivo di destinazione per l'installazione di Azure IoT Edge per Linux in Windows e la distribuzione della macchina virtuale Linux:
Impostare il criterio di esecuzione nel dispositivo di destinazione su
AllSigned
. È possibile controllare il criterio di esecuzione corrente in un prompt di PowerShell con privilegi elevati, usando il comando seguente:Get-ExecutionPolicy -List
Se il criterio di esecuzione di
local machine
non èAllSigned
, è possibile impostarlo come segue:Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Per altre informazioni sul modulo PowerShell di Azure IoT Edge per Linux in Windows, vedere le informazioni di riferimento sulle funzioni di PowerShell.
Nota
TPM 2.0 è necessario quando si usa l'attestazione TPM con il servizio Device Provisioning.
Quando si usa un TPM è possibile creare solo registrazioni del servizio Device Provisioning individuali, non di gruppo.
Installare IoT Edge
Distribuire Azure IoT Edge per Linux in Windows nel dispositivo di destinazione.
Installare IoT Edge per Linux in Windows nel dispositivo di destinazione.
Nota
Il seguente processo di PowerShell illustra come distribuire IoT Edge per Linux in Windows nel dispositivo locale. Per eseguire la distribuzione in un dispositivo di destinazione remoto tramite PowerShell, è possibile usare PowerShell remoto per stabilire una connessione a un dispositivo remoto ed eseguire questi comandi in remoto su tale dispositivo.
In una sessione di PowerShell con privilegi elevati, eseguire ognuno dei comandi seguenti per scaricare IoT Edge per Linux in Windows.
$msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi')) $ProgressPreference = 'SilentlyContinue' Invoke-WebRequest "https://aka.ms/AzEflowMSI" -OutFile $msiPath
Installare IoT Edge per Linux in Windows nel dispositivo.
Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
È possibile specificare directory personalizzate per l'installazione di IoT Edge per Linux in Windows e per il file VHDX, semplicemente aggiungendo i parametri
INSTALLDIR="<FULLY_QUALIFIED_PATH>"
eVHDXDIR="<FULLY_QUALIFIED_PATH>"
al comando di installazione. Ad esempio, se si vuole usare la cartella D:\EFLOW per l'installazione e la cartella D:\EFLOW-VHDX per il file VHDX, si può usare il cmdlet di PowerShell seguente.Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
Impostare su
AllSigned
il criterio di esecuzione nel dispositivo di destinazione, se l'operazione non è già stata eseguita. Vedere i prerequisiti di PowerShell per i comandi per il controllo del criterio di esecuzione corrente e impostare il criterio di esecuzione suAllSigned
.Creare la distribuzione di IoT Edge per Linux in Windows. La distribuzione crea la macchina virtuale Linux e installa automaticamente il runtime IoT Edge.
Deploy-Eflow
Suggerimento
Per impostazione predefinita, il comando
Deploy-Eflow
crea la macchina virtuale Linux con 1 GB di RAM, 1 core di vCPU e 16 GB di spazio su disco. Tuttavia, le risorse necessarie alla macchina virtuale dipendono fortemente dai carichi di lavoro distribuiti. Se la macchina virtuale non dispone di memoria sufficiente per supportare i carichi di lavoro, non sarà possibile avviarla.È possibile personalizzare le risorse disponibili della macchina virtuale usando i parametri facoltativi del comando
Deploy-Eflow
.Ad esempio, il comando seguente crea una macchina virtuale con 4 core vCPU, 4 GB di RAM (rappresentati in MB) e 20 GB di spazio su disco:
Deploy-Eflow -cpuCount 4 -memoryInMB 4096 -vmDiskSize 20
Per informazioni su tutti i parametri facoltativi disponibili, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.
Avviso
Per impostazione predefinita, la macchina virtuale EFLOW Linux non dispone di alcuna configurazione DNS. Le distribuzioni basate su DHCP tenteranno di ottenere la configurazione DNS propagata dal server DHCP. Per garantire l'accesso a Internet, controllare la configurazione DNS. Per altre informazioni, vedere AzEFLOW-DNS.
È possibile assegnare una GPU alla distribuzione per abilitare i moduli Linux con accelerazione GPU. Per ottenere l'accesso a queste funzionalità, è necessario installare i prerequisiti descritti in dettaglio in Accelerazione GPU per Azure IoT Edge per Linux in Windows.
Per usare un pass-through GPU, aggiungere i parametri gpuName, gpuPassthroughType e gpuCount al comando
Deploy-Eflow
. Per informazioni su tutti i parametri facoltativi disponibili, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.Avviso
L'abilitazione del pass-through del dispositivo hardware può aumentare i rischi per la sicurezza. Microsoft consiglia l'uso di un driver di mitigazione dei dispositivi prodotto dal fornitore della GPU, se applicabile. Per altre informazioni, vedere Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti.
Immettere "Y" per accettare le condizioni di licenza.
Immettere "O" o "R" per attivare o disattivare i Dati di diagnostica facoltativi in base alle proprie preferenze.
Al termine della distribuzione, nella finestra di PowerShell compare l'indicazione La distribuzione è riuscita.
Dopo aver completato la distribuzione, è possibile eseguire il provisioning del dispositivo.
Sono previsti alcuni passaggi per preparare il dispositivo per il provisioning con TPM. Lasciare aperta la distribuzione durante la preparazione del dispositivo. Si tornerà alla distribuzione più avanti nell'articolo.
Abilitare il pass-through del TPM
La VM IoT Edge per Linux in Windows include una funzionalità TPM che può essere abilitata o disabilitata. È disabilitata per impostazione predefinita. Quando questa funzionalità è abilitata, la VM può accedere al TPM del computer host.
Aprire PowerShell in una sessione con privilegi elevati.
Se non è già stato fatto, impostare il criterio di esecuzione nel dispositivo su
AllSigned
in modo da poter eseguire le funzioni di PowerShell di IoT Edge per Linux in Windows.Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
Attivare la funzionalità TPM.
Set-EflowVmFeature -feature 'DpsTpm' -enable
Recuperare le informazioni del TPM dal dispositivo
Per effettuare il provisioning del dispositivo sono necessari una Chiave di verifica dell'autenticità per il chip TPM e l'ID di registrazione per il dispositivo. Queste informazioni vanno fornite all'istanza del servizio Device Provisioning in modo che il servizio possa riconoscere il dispositivo quando prova a connettersi.
La chiave di verifica dell'autenticità è univoca per ogni chip TPM. Viene ottenuta dal produttore del chip TPM associato. È possibile derivare un ID di registrazione univoco per il dispositivo TPM, ad esempio, creando un hash SHA-256 della chiave di verifica dell'autenticità.
IoT Edge per Linux in Windows fornisce uno script di PowerShell per recuperare queste informazioni dal TPM. Per usare lo script, seguire questa procedura nel dispositivo:
Aprire PowerShell in una sessione con privilegi elevati.
Eseguire il comando .
Get-EflowVmTpmProvisioningInfo | Format-List
Creare una registrazione del servizio Device Provisioning
Usare le informazioni di provisioning del TPM per creare una registrazione singola nel servizio Device Provisioning.
Quando si crea una registrazione nel servizio Device Provisioning, si ha la possibilità di dichiarare uno Stato iniziale dispositivo gemello. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a una qualsiasi metrica usata nella propria soluzione, come l'area, l'ambiente, la località o il tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.
Suggerimento
I passaggi descritti in questo articolo sono relativi al portale di Azure, ma è anche possibile creare registrazioni singole usando l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere az iot dps enrollment. Come parte del comando dell'interfaccia della riga di comando, usare il flag edge-enabled per specificare che la registrazione è per un dispositivo IoT Edge.
Nel portale di Azure passare all'istanza del servizio Device Provisioning in hub IoT.
In le impostazioni selezionare Gestisci registrazioni.
Selezionare Aggiungi registrazione singola e quindi completare la procedura seguente per configurare la registrazione:
In Meccanismo selezionare TPM.
Specificare la Chiave di verifica dell'autenticità e l'ID di registrazione copiati dalla VM o dal dispositivo fisico.
Se si desidera, specificare un ID per il dispositivo. Se non si specifica un ID dispositivo, viene usato l'ID di registrazione.
Selezionare Vero per dichiarare che la macchina virtuale o il dispositivo fisico è un dispositivo IoT Edge.
Scegliere l'hub IoT collegato a cui si vuole connettere il dispositivo oppure selezionare Collega a nuovo hub IoT. È possibile scegliere più hub e il dispositivo verrà assegnato a uno di essi in base al criterio di assegnazione selezionato.
Aggiungere un valore di tag allo Stato iniziale dispositivo gemello, se si desidera. È possibile usare tag per identificare come destinazione gruppi di dispositivi per la distribuzione di moduli. Per altre informazioni, vedere Distribuire moduli IoT Edge su larga scala.
Seleziona Salva.
Ora che esiste una registrazione per questo dispositivo, il runtime IoT Edge può effettuare automaticamente il provisioning del dispositivo durante l'installazione.
Effettuare il provisioning del dispositivo con la relativa identità cloud
Aprire una sessione di PowerShell con privilegi elevati nel dispositivo Windows.
Effettuare il provisioning del dispositivo usando l'ID ambito raccolto dall'istanza del servizio Device Provisioning.
Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE"
Se il dispositivo è stato registrato usando un ID registrazione personalizzato, è necessario specificare anche l'ID di registrazione durante il provisioning:
Provision-EflowVM -provisioningType "DpsTpm" -scopeId "SCOPE_ID_HERE" -registrationId "REGISTRATION_ID_HERE"
Verificare l'esito positivo dell'installazione
Verificare che IoT Edge per Linux in Windows sia stato installato e configurato correttamente nel dispositivo IoT Edge.
Se il runtime è stato avviato correttamente, è possibile passare all'hub IoT e iniziare la distribuzione di moduli IoT Edge nel dispositivo.
È possibile verificare che sia stata usata la registrazione singola creata nel servizio Device Provisioning. Passare all'istanza del servizio Device Provisioning nel portale di Azure. Aprire i dettagli della registrazione per la registrazione singola creata. Si noti che lo stato della registrazione è assegnata e che l'ID dispositivo è elencato.
Usare i comandi seguenti sul dispositivo per verificare che il runtime IoT Edge sia stato installato e avviato correttamente.
Connettersi alla VM IoT Edge per Linux in Windows usando il comando seguente nella sessione di PowerShell:
Connect-EflowVm
Nota
L'unico account autorizzato a connettersi tramite SSH alla VM è l'utente che l'ha creata.
Dopo aver eseguito l'accesso, è possibile controllare l'elenco dei moduli IoT Edge in esecuzione usando il comando di Linux seguente:
sudo iotedge list
Se è necessario risolvere i problemi del servizio IoT Edge, usare i comandi di Linux seguenti.
Se è necessario risolvere problemi del servizio, recuperare i log di servizio.
sudo journalctl -u iotedge
Usare lo strumento
check
per verificare lo stato di configurazione e connessione del dispositivo.sudo iotedge check
Nota
In un dispositivo di cui è stato appena effettuato il provisioning potrebbe essere visualizzato un errore correlato all'hub di IoT Edge:
× idoneità alla produzione: la directory di archiviazione dell'hub di Edge è persistente nel file system host - Errore
Non è stati possibile controllare lo stato corrente del contenitore edgeHub
Questo errore è previsto in un dispositivo di cui è stato appena effettuato il provisioning, perché il modulo hub di IoT Edge non è in esecuzione. Per risolvere l'errore, nell'hub IoT impostare i moduli per il dispositivo e creare una distribuzione. La creazione di una distribuzione per il dispositivo avvia i moduli nel dispositivo, incluso il modulo hub di IoT Edge.
Disinstallare IoT Edge per Linux in Windows
Per rimuovere l'installazione di Azure IoT Edge per Linux in Windows dal dispositivo, utilizzare i comandi seguenti.
- Aprire Impostazioni in Windows
- Selezionare Installazione applicazioni
- Selezionare l'app Azure IoT Edge LTS
- Selezionare Disinstalla
Passaggi successivi
Il processo di registrazione del servizio Device Provisioning consente di impostare l'ID dispositivo e i tag del dispositivo gemello mentre si effettua il provisioning del nuovo dispositivo. È possibile usare questi valori per identificare come destinazione singoli dispositivi o gruppi di dispositivi usando la gestione automatica dei dispositivi.
Leggere l'articolo su come Distribuire e monitorare i moduli IoT Edge su larga scala tramite il portale di Azure o usando l'interfaccia della riga di comando di Azure.