Distribuire una macchina virtuale Linux abilitata per IoT Edge

Completato

Per testare la configurazione IoT Edge, è necessario distribuire il runtime IoT Edge in una macchina virtuale.

Prima di distribuire dispositivi IoT Edge reali nei punti vendita, si vuole verificare che i dispositivi funzionino come previsto. Per testare lo scenario, si prevede di distribuire il runtime IoT Edge in una macchina virtuale Linux di Azure e quindi di distribuire i moduli IoT Edge nella macchina virtuale.

In questa unità verranno esaminati alcuni concetti di base di IoT Edge, verrà illustrato come un dispositivo IoT Edge si connette a un'applicazione IoT Central e come IoT Central distribuisce i moduli IoT Edge nel runtime IoT Edge.

Che cos'è il runtime IoT Edge?

Il runtime di Azure IoT Edge consente la logica personalizzata e cloud sui dispositivi IoT Edge. Il runtime risiede nel dispositivo IoT Edge ed esegue operazioni di gestione e di comunicazione. Il runtime:

  • Installa e aggiorna i carichi di lavoro nel dispositivo.
  • Mantiene gli standard di sicurezza di Azure IoT Edge sul dispositivo.
  • Assicura che i moduli di IoT Edge siano sempre in esecuzione.
  • Segnala l'integrità dei moduli al cloud per il monitoraggio remoto.
  • Gestisce la comunicazione tra i dispositivi downstream e un dispositivo IoT Edge, tra i moduli in un dispositivo IoT Edge e tra un dispositivo IoT Edge e il cloud e tra dispositivi IoT Edge.

Che cosa sono i moduli IoT Edge?

I moduli IoT Edge sono unità di esecuzione che eseguono la logica di business nella rete perimetrale. I moduli vengono implementati come contenitori compatibili con Docker. È possibile configurare più moduli in modo che comunichino tra loro, creando una pipeline di elaborazione dati. È possibile sviluppare moduli personalizzati o inserire determinati servizi di Azure nei moduli che contengono informazioni offline e nella rete perimetrale. Poiché i moduli vengono eseguiti in contenitori Docker, si comportano nello stesso modo indipendentemente dal fatto che siano installati in una macchina virtuale o in un dispositivo reale.

Nell'unità successiva si installerà il runtime IoT Edge e si distribuirà un modulo personalizzato che raccoglie i dati ambientali da inviare a IoT Central. Un operatore di IoT Central può quindi monitorare le condizioni ambientali nei punti vendita visualizzando i dati di telemetria nei dashboard dell'applicazione.

In che modo un dispositivo IoT Edge si connette a IoT Central?

I dispositivi IoT Edge, come altri dispositivi, usano il servizio Device Provisioning per connettersi all'applicazione IoT Central. Nell'unità precedente, quando è stato aggiunto un dispositivo all'applicazione IoT Central, si è preso nota dell'ID ambito, dell'ID dispositivo e della chiave del dispositivo. Questi valori vengono aggiunti al file di configurazione IoT Edge nel dispositivo IoT Edge. La sezione pertinente di questo file TOML è simile alla seguente. registration_id è l'ID dispositivo:

[provisioning]
source = "dps"
global_endpoint = "https://global.azure-devices-provisioning.net"
id_scope = "YOUR_ID_SCOPE"

[provisioning.attestation]
method = "symmetric_key"
registration_id = "YOUR_DEVICE_ID"
symmetric_key = { value = "YOUR_DEVICE_KEY" }

Nell'unità successiva lo script di distribuzione usato per il dispositivo IoT Edge modifica il file di configurazione.

In che modo IoT Central distribuisce i moduli in un runtime IoT Edge?

Nell'unità precedente, quando è stato creato il modello di dispositivo per il sensore ambientale, è stato caricato un manifesto della distribuzione nel modello. Quando il runtime IoT Edge si connette all'applicazione IoT Central, scarica il manifesto della distribuzione. Il runtime usa le informazioni nel manifesto della distribuzione per determinare quali moduli installare e come configurarli. I moduli vengono scaricati da un registro contenitori, ad esempio Registro Azure Container o Docker Hub.

Il manifesto della distribuzione usato installa i due moduli di sistema necessari, edgeAgent e edgeHub e un modulo SimulatedTemperatureSensor personalizzato. Questo modulo personalizzato invia i dati di telemetria ambient e machine a IoT Central e ha due proprietà, SendData e SendInterval, che un operatore può usare per configurare il modulo:

{
  "modulesContent": {
    "$edgeAgent": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "runtime": {
          "type": "docker",
          "settings": {
            "minDockerVersion": "v1.25",
            "loggingOptions": "",
            "registryCredentials": {}
          }
        },
        "systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-agent:1.4",
              "createOptions": "{}"
            }
          },
          "edgeHub": {
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-hub:1.4",
              "createOptions": "{}"
            }
          }
        },
        "modules": {
          "SimulatedTemperatureSensor": {
            "version": "1.0",
            "type": "docker",
            "status": "running",
            "restartPolicy": "always",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.4.6",
              "createOptions": "{}"
            }
          }
        }
      }
    },
    "$edgeHub": {
      "properties.desired": {
        "schemaVersion": "1.0",
        "routes": {
            "route": "FROM /* INTO $upstream"
        },
        "storeAndForwardConfiguration": {
          "timeToLiveSecs": 7200
        }
      }
    },
    "SimulatedTemperatureSensor": {
      "properties.desired": {
           "SendData": true,
           "SendInterval": 10
      }
    }
  }
}

Distribuire IoT Edge in una macchina virtuale

1.

In che modo un dispositivo IoT Edge si connette a IoT Central?

2.

Da dove scarica i moduli un dispositivo IoT Edge?