Creare ed effettuare il provisioning di un dispositivo IoT Edge per Linux su larga scala usando un TPM

Si applica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 è la versione supportata. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Questo articolo fornisce istruzioni per il provisioning automatico di un dispositivo Azure IoT Edge per Linux in un dispositivo Windows usando un modulo TPM (Trusted Platform Module). È possibile effettuare automaticamente il provisioning dei dispositivi Azure IoT Edge con il servizio di provisioning di dispositivi hub IoT di Azure. Se non si ha familiarità con il processo di provisioning automatico, esaminare la panoramica del provisioning prima di continuare.

Questo articolo illustra due metodologie. Selezionare le preferenze 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:

  • Installare IoT Edge per Linux in Windows.
  • Recuperare le informazioni TPM dal dispositivo.
  • Creare una singola registrazione per il dispositivo.
  • Effettuare il provisioning del dispositivo con le relative informazioni TPM.

Prerequisiti

Risorse cloud

  • Un hub IoT attivo
  • Istanza del servizio device provisioning hub IoT in Azure, collegata all'hub IoT
    • Se non si dispone di un'istanza del servizio device provisioning, è possibile seguire le istruzioni riportate nella guida introduttiva Creare un nuovo servizio di provisioning dei dispositivi hub IoT e Collegare l'hub IoT e il servizio device provisioning dell'avvio rapido hub IoT servizio device provisioning.
    • Dopo aver eseguito il servizio device provisioning, 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 Windows 10 e Windows Server 2019 build minima 17763 con tutti gli aggiornamenti cumulativi correnti installati.
  • Requisiti hardware

    • Memoria minima disponibile: 1 GB
    • Spazio su disco minimo: 10 GB
  • Supporto per la virtualizzazione

  • Supporto per la rete

    • Windows Server non è dotato di un'opzione predefinita. 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 di Windows Desktop sono dotate di un commutatore predefinito che può essere usato 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 diverse opzioni di configurazione.

Sarà necessario installare i driver corretti a seconda dell'architettura GPU e potrebbe essere necessario accedere a una build del programma Windows Insider. Per determinare le esigenze di configurazione e soddisfare questi prerequisiti, vedere Accelerazione GPU per Azure IoT Edge per Linux in Windows.

Assicurarsi di dedicare il tempo necessario per soddisfare i prerequisiti per l'accelerazione GPU. Sarà necessario riavviare il processo di installazione se si decide di volere l'accelerazione GPU durante l'installazione.

Strumenti di sviluppo

Preparare il dispositivo di destinazione per l'installazione di Azure IoT Edge per Linux in Windows e la distribuzione della macchina virtuale Linux:

  1. Impostare i criteri di esecuzione nel dispositivo di destinazione su AllSigned. È possibile controllare i criteri di esecuzione correnti in un prompt di PowerShell con privilegi elevati usando il comando seguente:

    Get-ExecutionPolicy -List
    

    Se il criterio di esecuzione di non AllSignedè , è possibile impostare i criteri di local machine esecuzione usando:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Per altre informazioni sul modulo Azure IoT Edge per Linux in Windows PowerShell, 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.

È possibile creare registrazioni individuali, non di gruppo, del servizio device provisioning solo quando si usa un TPM.

Installare IoT Edge

Distribuire Azure IoT Edge per Linux in Windows nel dispositivo di destinazione.

Nota

Il processo di PowerShell seguente illustra come distribuire IoT Edge per Linux in Windows nel dispositivo locale. Per eseguire la distribuzione in un dispositivo di destinazione remota tramite PowerShell, è possibile usare Remote PowerShell per stabilire una connessione a un dispositivo remoto ed eseguire questi comandi in remoto su tale dispositivo.

  1. In una sessione di PowerShell con privilegi elevati eseguire uno dei comandi seguenti a seconda dell'architettura del dispositivo di destinazione per scaricare IoT Edge per Linux in Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. 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 IoT Edge personalizzate per Linux in Windows e VHDX aggiungendo INSTALLDIR="<FULLY_QUALIFIED_PATH>" parametri e VHDXDIR="<FULLY_QUALIFIED_PATH>" al comando di installazione. Ad esempio, se si vuole usare la cartella D:\EFLOW per l'installazione e D :\EFLOW-VHDX per VHDX, è possibile 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"
    
  3. Impostare i criteri di esecuzione nel dispositivo di destinazione su AllSigned se non lo è già. Vedere i prerequisiti di PowerShell per i comandi per controllare i criteri di esecuzione correnti e impostare i criteri di esecuzione su AllSigned.

  4. Creare la distribuzione di IoT Edge per Linux in Windows. La distribuzione crea la macchina virtuale Linux e installa automaticamente il runtime di IoT Edge.

    Deploy-Eflow
    

    Suggerimento

    Per impostazione predefinita, il Deploy-Eflow comando crea la macchina virtuale Linux con 1 GB di RAM, 1 core vCPU e 16 GB di spazio su disco. Tuttavia, le risorse necessarie per la macchina virtuale dipendono in modo elevato dai carichi di lavoro distribuiti. Se la macchina virtuale non dispone di memoria sufficiente per supportare i carichi di lavoro, l'avvio non riuscirà.

    È possibile personalizzare le risorse disponibili della macchina virtuale usando i Deploy-Eflow parametri facoltativi del comando. Questa operazione è necessaria per distribuire EFLOW in un dispositivo con i requisiti hardware minimi.

    Ad esempio, il comando seguente crea una macchina virtuale con 1 core vCPU, 1 GB di RAM (rappresentati in MB) e 2 GB di spazio su disco:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    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 ha alcuna configurazione DNS. Le distribuzioni che usano DHCP tenteranno di ottenere la configurazione DNS propagata dal server DHCP. Controllare la configurazione DNS per garantire la connettività Internet. 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 Deploy-Eflow comando. 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 un driver di mitigazione dei dispositivi dal fornitore della GPU, se applicabile. Per altre informazioni, vedere Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti.

  5. Immettere "Y" per accettare le condizioni di licenza.

  6. Immettere "O" o "R" per attivare o disattivare i dati di diagnostica facoltativi, a seconda delle preferenze.

  7. Al termine della distribuzione, nella finestra di PowerShell viene visualizzata la finestra Distribuzione completata.

    A successful deployment will say 'Deployment successful' at the end of the messages, PNG.

    Dopo aver completato la distribuzione, è possibile eseguire il provisioning del dispositivo.

Esistono 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 TPM

IoT Edge per Linux nella macchina virtuale Windows include una funzionalità TPM che può essere abilitata o disabilitata. Per impostazione predefinita, è disabilitato. Quando questa funzionalità è abilitata, la macchina virtuale può accedere al TPM del computer host.

  1. Aprire PowerShell in una sessione con privilegi elevati.

  2. Se non è già stato fatto, impostare i criteri di esecuzione nel dispositivo su AllSigned in modo da poter eseguire le funzioni di IoT Edge per Linux in Windows PowerShell.

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    
  3. Attivare la funzionalità TPM.

    Set-EflowVmFeature -feature 'DpsTpm' -enable
    

Recuperare le informazioni TPM dal dispositivo

Per effettuare il provisioning del dispositivo, è necessaria una chiave di verifica dell'autenticità per il chip TPM e l'ID registrazione per il dispositivo. Queste informazioni vengono fornite all'istanza del servizio device provisioning in modo che il servizio possa riconoscere il dispositivo quando tenta di connettersi.

La chiave di verifica dell'autenticità è univoca per ogni chip TPM. Viene ottenuto 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:

  1. Aprire PowerShell in una sessione con privilegi elevati.

  2. 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 del dispositivo gemello. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a qualsiasi metrica usata nella soluzione, ad esempio area, ambiente, posizione o tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.

Suggerimento

I passaggi descritti in questo articolo sono relativi alla 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 abilitato per edge per specificare che la registrazione è per un dispositivo IoT Edge.

  1. Nella portale di Azure passare all'istanza del servizio device provisioning hub IoT.

  2. In le impostazioni selezionare Gestisci registrazioni.

  3. Selezionare Aggiungi registrazione singola e quindi completare la procedura seguente per configurare la registrazione:

    1. In Meccanismo selezionare TPM.

    2. Specificare la chiave di verifica dell'autenticità e l'ID registrazione copiati dalla macchina virtuale o dal dispositivo fisico.

    3. Specificare un ID per il dispositivo, se necessario. Se non si specifica un ID dispositivo, viene usato l'ID di registrazione.

    4. Selezionare True per dichiarare che la macchina virtuale o il dispositivo fisico è un dispositivo IoT Edge.

    5. Scegliere l'hub IoT collegato a cui si vuole connettere il dispositivo oppure selezionare Collega a un nuovo hub IoT. È possibile scegliere più hub e il dispositivo verrà assegnato a uno di essi in base ai criteri di assegnazione selezionati.

    6. Aggiungere un valore di tag allo stato iniziale del dispositivo gemello, se necessario. È 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.

    7. Seleziona Salva.

Ora che esiste una registrazione per questo dispositivo, il runtime di IoT Edge può effettuare automaticamente il provisioning del dispositivo durante l'installazione.

Effettuare il provisioning del dispositivo con la relativa identità cloud

  1. Aprire una sessione di PowerShell con privilegi elevati nel dispositivo Windows.

  2. 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 accedere all'hub IoT e iniziare a distribuire i 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 viene assegnato e che l'ID dispositivo è elencato.

Usare i comandi seguenti nel dispositivo per verificare che IoT Edge sia installato e avviato correttamente.

  1. Connessione alla macchina virtuale 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 macchina virtuale è l'utente che lo ha creato.

  2. Dopo aver eseguito l'accesso, è possibile controllare l'elenco dei moduli IoT Edge in esecuzione usando il comando Linux seguente:

    sudo iotedge list
    
  3. Se è necessario risolvere i problemi del servizio IoT Edge, usare i comandi Linux seguenti.

    1. Se è necessario risolvere problemi del servizio, recuperare i log di servizio.

      sudo iotedge system logs
      
    2. Usare lo check strumento 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 IoT Edge:

    × conformità alla produzione: la directory di archiviazione dell'hub Edge è persistente nel file system host - Errore

    Impossibile controllare lo stato corrente del contenitore edgeHub

    Questo errore è previsto in un dispositivo di cui è stato appena effettuato il provisioning perché il modulo hub IoT Edge non è in esecuzione. Per risolvere l'errore, in 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 IoT Edge.

Disinstallare IoT Edge per Linux in Windows

Per rimuovere l'installazione di Azure IoT Edge per Linux dal dispositivo, usare i comandi seguenti.

  1. Aprire Impostazioni in Windows
  2. Selezionare Installazione applicazioni
  3. Selezionare l'app Azure IoT Edge
  4. Selezionare Disinstalla

Passaggi successivi

Il processo di registrazione del servizio device provisioning consente di impostare l'ID dispositivo e i tag del dispositivo gemello contemporaneamente al provisioning del nuovo dispositivo. È possibile usare questi valori per definire come destinazione singoli dispositivi o gruppi di dispositivi usando la gestione automatica dei dispositivi.

Informazioni su come distribuire e monitorare i moduli IoT Edge su larga scala usando il portale di Azure o l'interfaccia della riga di comando di Azure.