Creare ed effettuare il provisioning di dispositivi IoT Edge per Linux in Windows su larga scala usando chiavi simmetriche

Si applica a: Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 sono versioni supportate. IoT Edge 1.4 LTS raggiungerà la data di fine del servizio il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Questo articolo illustra come effettuare il provisioning automatico di uno o più dispositivi IoT Edge per Linux in Windows usando chiavi simmetriche. È possibile effettuare automaticamente il provisioning di dispositivi Azure IoT Edge con servizio Device Provisioning in hub IoT di Azure (DPS). Se non si ha familiarità con il processo di provisioning automatico, vedere la panoramica sul provisioning prima di continuare.

Le attività sono le seguenti:

  1. Creare una registrazione singola per un singolo dispositivo o una registrazione di gruppo per un set di dispositivi.
  2. Distribuire una macchina virtuale Linux con il runtime IoT Edge installato e connetterla all'hub IoT.

L'attestazione con chiave simmetrica costituisce un approccio semplice per autenticare un dispositivo con un'istanza del servizio Device Provisioning. Questo metodo di attestazione rappresenta un'esperienza di "Hello World" per gli sviluppatori che non hanno familiarità con il provisioning dei dispositivi o che non possiedono requisiti di sicurezza restrittivi. L'attestazione del dispositivo mediante un TPM o certificati X.509 è più sicura e deve essere usata per requisiti di sicurezza più rigorosi.

Prerequisiti

Risorse cloud

  • Un hub IoT attivo
  • Un'istanza del servizio Device Provisioning in Hub IoT in Azure, collegata all'hub IoT

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 della virtualizzazione

  • 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 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 della GPU e può essere necessario accedere a una build del Programma Windows Insider. Per determinare le proprie esigenze di configurazione e soddisfare questi prerequisiti, vedere Accelerazione della GPU per Azure IoT Edge per Linux in Windows.

Si consiglia di dedicare subito il tempo necessario a soddisfare i prerequisiti per l'accelerazione GPU. Se si decide di volere l'accelerazione GPU durante l'installazione, sarà necessario riavviare il processo di 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 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 usando:

    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.

Creare una registrazione nel servizio Device Provisioning

Creare una registrazione per effettuare il provisioning di uno o più dispositivi tramite il servizio Device Provisioning.

Se si vuole effettuare il provisioning di un singolo dispositivo IoT Edge, creare una registrazione singola. Se è necessario effettuare il provisioning di più dispositivi, seguire la procedura per creare una registrazione di gruppo nel servizio Device Provisioning.

Quando si crea una registrazione nel servizio Device Provisioning, si ha la possibilità di dichiarare un valore di Stato iniziale dispositivo gemello. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a una qualsiasi metrica necessaria nella propria soluzione, come l'area, l'ambiente, la località o il tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.

Per altre informazioni sulle registrazioni nel servizio Device Provisioning, vedere Come gestire le registrazioni dei dispositivi.

Creare una registrazione singola nel servizio Device Provisioning

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.

  1. Nel portale di Azure passare all'istanza del servizio Device Provisioning in hub IoT.

  2. In le impostazioni selezionare Gestisci registrazioni.

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

    1. Per Meccanismo selezionare Chiave simmetrica.

    2. Creare un ID registrazione univoco per il dispositivo.

    3. Facoltativamente, specificare un ID dispositivo hub IoT per il dispositivo. È possibile usare gli ID dispositivo per identificare come destinazione un singolo dispositivo per la distribuzione di moduli. Se non si specifica un ID dispositivo, viene usato l'ID di registrazione.

    4. Selezionare Vero per dichiarare che la registrazione è per un dispositivo IoT Edge.

    5. Facoltativamente, aggiungere un valore di tag allo Stato iniziale dispositivo gemello. È possibile usare tag per identificare come destinazione gruppi di dispositivi per la distribuzione di moduli. Ad esempio:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    6. Seleziona Salva.

  4. Copiare il valore della Chiave primaria della registrazione singola per usarlo durante l'installazione del runtime IoT Edge.

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

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 remoto tramite PowerShell, è possibile usare PowerShell remoto per stabilire una connessione con 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 personalizzate per l'installazione di IoT Edge per Linux in Windows e per il file VHDX aggiungendo i parametri INSTALLDIR="<FULLY_QUALIFIED_PATH>" e VHDXDIR="<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, è 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 il criterio di esecuzione nel dispositivo di destinazione su AllSigned, se non è già così. Vedere i prerequisiti di PowerShell per i comandi necessari per controllare i criterio di esecuzione corrente e impostarlo 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 IoT Edge.

    Deploy-Eflow
    

    Suggerimento

    Per impostazione predefinita, il comando Deploy-Eflow 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 VM dipendono in gran parte dai carichi di lavoro distribuiti. Se la VM 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 parametri facoltativi del comando Deploy-Eflow. 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 (rappresentato 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 Linux EFLOW non ha alcuna configurazione DNS. Le distribuzioni che usano DHCP proveranno a ottenere la configurazione DNS propagata dal server DHCP. Controllare la configurazione DNS per garantire l'accesso a 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 della GPU per Azure IoT Edge per Linux in Windows.

    Per usare un pass-through della 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 di usare un driver di mitigazione per il dispositivo prodotto 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 visualizzato il messaggio La distribuzione è riuscita.

    Una distribuzione con esito positivo indicherà

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

Effettuare il provisioning del dispositivo con la relativa identità cloud

Dopo aver installato il runtime nel dispositivo, configurarlo con le informazioni da usare per connettersi al servizio Device Provisioning e all'hub IoT.

Preparare le informazioni seguenti:

  • Valore Ambito ID del servizio Device Provisioning
  • ID di registrazione del dispositivo creato
  • Chiave primaria per una registrazione singola oppure chiave derivata per i dispositivi che usano una registrazione di gruppo.

Eseguire il comando seguente in una sessione di PowerShell con privilegi elevati, aggiornando i valori segnaposto con i propri valori:

Provision-EflowVm -provisioningType DpsSymmetricKey -scopeId PASTE_YOUR_ID_SCOPE_HERE -registrationId PASTE_YOUR_REGISTRATION_ID_HERE -symmKey PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_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.

È 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.

  1. Accedere 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 di Linux seguenti.

    1. Recuperare i log del servizio.

      sudo iotedge system logs
      
    2. 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 può essere visualizzato un errore correlato all'hub IoT Edge simile al seguente:

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

    Non è 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.

Quando si crea un nuovo dispositivo IoT Edge, viene visualizzato il codice di stato 417 -- The device's deployment configuration is not set nel portale di Azure. Questo stato è normale e significa che il dispositivo è pronto per ricevere una distribuzione del modulo.

Disinstallare IoT Edge per Linux in Windows

Per rimuovere l'installazione di Azure IoT Edge per Linux in Windows 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 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. Informazioni 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.

È anche possibile: