Condividi tramite


Distribuire moduli IoT Edge su larga scala con Visual Studio Code

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

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS è di fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

È possibile creare una distribuzione automatica di IoT Edge usando Visual Studio Code per gestire le distribuzioni in corso per più dispositivi contemporaneamente. Le distribuzioni automatiche per IoT Edge rientrano nella funzionalità di gestione automatica dei dispositivi dell'hub IoT. Le distribuzioni sono processi dinamici che consentono di distribuire più moduli in più dispositivi. È anche possibile tenere traccia dello stato e dell'integrità dei moduli e apportare modifiche quando necessario.

Per altre informazioni, vedere Informazioni sulle distribuzioni automatiche di IoT Edge per singoli dispositivi o su vasta scala.

In questo articolo si configura Visual Studio Code e l'estensione IoT. Si apprenderà quindi come distribuire moduli in un set di dispositivi IoT Edge.

Prerequisiti

Eseguire l'accesso all'hub IoT

È possibile usare le estensioni Azure IoT per Visual Studio Code per eseguire operazioni con l'hub. Per consentire il funzionamento di queste operazioni, è necessario accedere all'account Azure e selezionare l'hub IoT su cui si sta lavorando.

  1. In Visual Studio Code aprire la finestra di esplorazione.

  2. Nella parte inferiore di Explorer, espandere la sezione Hub IoT di Azure.

  3. Fare clic sui puntini di sospensione (...) nell'intestazione della sezione Hub IoT di Azure. Se i puntini di sospensione non sono visibili, passare il puntatore sull'intestazione.

  4. Scegliere Select IoT Hub (Seleziona l'hub IoT).

  5. Se non si è connessi all'account Azure, seguire le istruzioni per farlo.

  6. Seleziona la tua sottoscrizione di Azure.

  7. Selezionare l'hub IoT.

Configurare un manifesto della distribuzione

Un manifesto della distribuzione è un documento JSON che descrive i moduli da distribuire. Descrive anche il flusso dei dati tra i moduli e le proprietà desiderate dei moduli gemelli. Per altre informazioni, vedere Informazioni su come distribuire moduli e definire route in IoT Edge.

Per distribuire i moduli tramite Visual Studio Code, salvare il manifesto della distribuzione a livello locale come file con estensione JSON. Sarà necessario specificarne la posizione quando si esegue il comando per applicare la configurazione al dispositivo.

Di seguito è riportato un esempio di manifesto della distribuzione di base con un solo modulo:

Nota

Questo manifesto della distribuzione di esempio usa lo schema versione 1.1 per l'agente e l'hub di IoT Edge. La versione dello schema 1.1 è stata rilasciata insieme a IoT Edge versione 1.0.10 e abilita funzionalità come l'ordine di avvio del modulo e la definizione delle priorità di route.

{
  "content": {
    "modulesContent": {
      "$edgeAgent": {
        "properties.desired": {
          "schemaVersion": "1.1",
          "runtime": {
            "type": "docker",
            "settings": {
              "minDockerVersion": "v1.25",
              "loggingOptions": "",
              "registryCredentials": {}
            }
          },
          "systemModules": {
            "edgeAgent": {
              "type": "docker",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-agent:1.5",
                "createOptions": "{}"
              }
            },
            "edgeHub": {
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
              }
            }
          },
          "modules": {
            "SimulatedTemperatureSensor": {
              "version": "1.5",
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
                "createOptions": "{}"
              }
            }
          }
        }
      },
      "$edgeHub": {
        "properties.desired": {
          "schemaVersion": "1.1",
          "routes": {
            "upstream": "FROM /messages/* INTO $upstream"
          },
          "storeAndForwardConfiguration": {
            "timeToLiveSecs": 7200
          }
        }
      },
      "SimulatedTemperatureSensor": {
        "properties.desired": {
          "SendData": true,
          "SendInterval": 5
        }
      }
    }
  }
}

Se è necessario determinare quali dispositivi IoT Edge è attualmente possibile configurare, eseguire il comando IoT Edge: Ottieni informazioni sul dispositivo.

Identificare i dispositivi con le condizioni di destinazione

Per identificare i dispositivi IoT Edge che devono ricevere la distribuzione, è necessario specificare una condizione di destinazione. Una condizione di destinazione viene soddisfatta quando i criteri specificati corrispondono a un valore deviceId, un valore di tag o un valore della proprietà segnalata.

I tag vengono configurati nel dispositivo gemello. Di seguito è riportato un esempio di dispositivo gemello con tag:

"tags":{
  "location":{
    "building": "20",
    "floor": "2"
  },
  "roomtype": "conference",
  "environment": "prod"
}

Questo dispositivo riceverà una distribuzione se la condizione di destinazione per la distribuzione contiene un'espressione che corrisponde a uno dei valori del tag, ad esempio tag.location.building = '20'.

Se si vuole specificare come destinazione un dispositivo specifico indipendentemente dai relativi tag o altri valori, è sufficiente specificare per deviceId la condizione di destinazione.

Di seguito sono riportati altri esempi:

  • deviceId ='linuxprod1'
  • deviceId = 'linuxprod1' OR deviceId = 'linuxprod2' OR deviceId = 'linuxprod3'
  • tags.environment ='prod'
  • tags.environment = 'prod' AND tags.location = 'westus2'
  • tags.environment = 'prod' OR tags.location = 'westus2'
  • tags.operator = 'John' AND tags.environment = 'prod' AND NOT deviceId = 'linuxprod1'

Per informazioni dettagliate, vedere la condizione di destinazione. Per altre informazioni sui dispositivi gemelli e i tag, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

Modificare il dispositivo gemello

È possibile modificare il dispositivo gemello in Visual Studio Code per configurare i tag. Dal menu Visualizza selezionare Riquadro comandi ed eseguire il comando IoT Edge: Modifica dispositivo gemello. Selezionare il dispositivo IoT Edge e viene visualizzato il dispositivo gemello.

In questo esempio non sono stati definiti tag. Sostituire la sezione "tags": {} vuota corrente con la definizione di tag personalizzata.

{
    "deviceId": "myEdgeDevice",
    "etag": "AAAAAAAAAAE=",
    "deviceEtag": "NTgwMDg5MDAz",
    "status": "enabled",
    "statusUpdateTime": "0001-01-01T00:00:00Z",
    "connectionState": "Disconnected",
    "lastActivityTime": "0001-01-01T00:00:00Z",
    "cloudToDeviceMessageCount": 0,
    "authenticationType": "sas",
    "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
    },
    "version": 2,
    "properties": {
        "desired": {
            "$metadata": {
                "$lastUpdated": "2019-12-29T00:58:49.9315265Z"
            },
            "$version": 1
        },
        "reported": {
            "$metadata": {
                "$lastUpdated": "2019-12-29T00:58:49.9315265Z"
            },
            "$version": 1
        }
    },
    "capabilities": {
        "iotEdge": true
    },
    "deviceScope": "ms-azure-iot-edge://myEdgeDevice-637131779299315265",
    "tags": {}
}

Dopo aver salvato il file locale, eseguire il comando IoT Edge: Update Device Twin (IoT Edge: Update Device Twin ).

Creare una distribuzione su larga scala

Dopo aver configurato il manifesto della distribuzione e aver configurato i tag nel dispositivo gemello, si è pronti per la distribuzione.

  1. Scegliere Riquadro comandi dal menu Visualizza e selezionare il comando Azure IoT Edge: Create Deployment at Scale (Azure IoT Edge: Create Deployment at Scale).

  2. Passare al file JSON del manifesto di distribuzione che si vuole usare e fare clic su Select Edge deployment manifest (Seleziona il manifesto della distribuzione di Edge).

  3. Specificare i valori come richiesto, a partire dall'ID distribuzione.

    Screenshot che mostra come specificare un ID distribuzione.

    Specificare i valori per questi parametri:

Parametro Descrizione
ID distribuzione Nome della distribuzione che verrà creata nell'hub IoT. Assegnare alla distribuzione un nome univoco contenente al massimo 128 lettere minuscole. Evitare gli spazi e i seguenti caratteri non validi: & ^ [ ] { } \ | " < > /.
Condizione di destinazione Immettere una condizione di destinazione per determinare quali dispositivi saranno destinati a questa distribuzione. La condizione è basata sui tag o sulle proprietà segnalate dei dispositivi gemelli e deve corrispondere al formato di espressione. Ad esempio: tags.environment='test' and properties.reported.devicemodel='4000x'
Priorità Numero intero positivo. Se due o più distribuzioni sono destinate allo stesso dispositivo, verrà applicata la distribuzione con il valore numerico più alto per Priority.

Dopo aver specificato la priorità, il terminale dovrebbe visualizzare un output simile alla rappresentazione seguente:

[Edge] Start deployment with deployment id [{specified-value}] and target condition [{specified-value}]
[Edge] Deployment with deployment id [{specified-value}] succeeded.

Monitoraggio e modifica delle distribuzioni

Usare il portale di Azure o l'interfaccia della riga di comando di Azure per monitorare, modificare ed eliminare le distribuzioni. Entrambe forniscono metriche nelle distribuzioni.

Passaggi successivi

Altre informazioni sulla distribuzione di moduli nei dispositivi IoT Edge.