Menyebarkan modul IoT Edge dalam skala besar menggunakan Visual Studio Code

Berlaku untuk tandacentang:IoT Edge 1.1 IoT Edge 1.1 IoT Edge 1.2 tanda centang IoT Edge 1.2 IoT Edge 1.3 IoT Edge 1.3

Anda dapat membuat penyebaran otomatis IoT Edge menggunakan Visual Studio Code untuk mengelola penyebaran yang sedang berlangsung untuk banyak perangkat sekaligus. Penyebaran otomatis untuk IoT Edge adalah bagian dari fitur manajemen perangkat otomatis IoT Hub. Penyebaran adalah proses dinamis yang memungkinkan Anda menyebarkan beberapa modul ke beberapa perangkat. Anda juga dapat melacak status dan kesehatan modul, serta membuat perubahan bila perlu.

Untuk informasi selengkapnya, lihat Memahami penyebaran otomatis IoT Edge untuk satu perangkat atau dalam skala besar.

Dalam artikel ini, Anda menyiapkan Visual Studio Code dan ekstensi IoT. Anda selanjutnya mempelajari cara menyebarkan modul ke satu set perangkat IoT Edge.

Prasyarat

Masuk untuk mengakses hub IoT Anda

Anda dapat menggunakan ekstensi Azure IoT untuk Visual Studio Code untuk melakukan operasi dengan Hub Anda. Agar operasi ini berfungsi, Anda harus masuk ke akun Azure Anda dan memilih hub IoT yang sedang Anda kerjakan.

  1. Di Visual Studio Code, buka tampilan Explorer.

  2. Di bagian bawah Explorer, buka bagian Azure IoT Hub.

  3. Klik ... di header bagian Azure IoT Hub. Jika Anda tidak melihat elipsis, arahkan kursor ke header.

  4. Pilih Pilih IoT Hub.

  5. Jika Anda tidak masuk ke akun Azure, ikuti perintah untuk melakukannya.

  6. Pilih langganan Azure Anda.

  7. Pilih hub IoT Anda.

Mengonfigurasi manifes penerapan

Manifes penyebaran adalah dokumen JSON yang menjelaskan modul mana yang akan diterapkan. Ini juga menjelaskan bagaimana data mengalir di antara modul, dan properti yang diinginkan dari modul kembar. Untuk informasi selengkapnya, lihat Pelajari cara menyebarkan modul dan membuat rute di IoT Edge.

Untuk menyebarkan modul menggunakan Visual Studio Code, simpan manifes penyebaran secara lokal sebagai file .JSON. Anda harus menyediakan lokasinya saat menjalankan perintah untuk menerapkan konfigurasi ke perangkat Anda.

Berikut adalah manifes penyebaran dasar dengan satu modul sebagai contoh:

Catatan

Manifes penyebaran sampel ini menggunakan skema versi 1.1 untuk agen dan hub IoT Edge. Skema versi 1.1 dirilis bersama dengan IoT Edge versi 1.0.10, dan memungkinkan fitur seperti urutan mulai modul dan prioritas rute.

{
  "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.1",
                "createOptions": "{}"
              }
            },
            "edgeHub": {
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
              }
            }
          },
          "modules": {
            "SimulatedTemperatureSensor": {
              "version": "1.1",
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0",
                "createOptions": "{}"
              }
            }
          }
        }
      },
      "$edgeHub": {
        "properties.desired": {
          "schemaVersion": "1.0",
          "routes": {
            "upstream": "FROM /messages/* INTO $upstream"
          },
          "storeAndForwardConfiguration": {
            "timeToLiveSecs": 7200
          }
        }
      },
      "SimulatedTemperatureSensor": {
        "properties.desired": {
          "SendData": true,
          "SendInterval": 5
        }
      }
    }
  }
}

Jika Anda perlu menentukan perangkat IoT Edge mana yang saat ini dapat Anda konfigurasi, jalankan perintah IoT Edge: Get Device Info.

Mengidentifikasi perangkat dengan persyaratan target

Untuk mengidentifikasi perangkat IoT Edge yang akan menerima penyebaran, Anda harus menentukan persyaratan target. Persyaratan target terpenuhi saat kriteria yang ditentukan dicocokkan dengan deviceId, nilai tag, atau nilai properti yang dilaporkan.

Anda mengonfigurasi tag di perangkat kembar. Berikut adalah contoh perangkat kembar yang memiliki tag:

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

Perangkat ini akan menerima penyebaran jika persyaratan target untuk penyebaran berisi ekspresi yang cocok dengan salah satu nilai tag, seperti tag.location.building = '20'.

Jika Anda ingin menargetkan perangkat tertentu terlepas dari tag atau nilai lainnya, cukup tentukan deviceId untuk persyaratan target.

Berikut adalah beberapa contoh lainnya:

  • 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'

Lihat persyaratan target untuk detailnya. Untuk informasi selengkapnya tentang perangkat kembar dan tag, lihat Memahami dan menggunakan perangkat kembar di IoT Hub.

Mengedit perangkat kembar

Anda dapat mengedit perangkat kembar di Visual Studio Code untuk mengonfigurasi tag. Dari menu Tampilan, pilih Palet Perintah dan jalankan perintah IoT Edge: Edit Device Twin. Pilih perangkat IoT Edge Anda dan perangkat kembaran muncul.

Dalam contoh ini, tag tidak ditentukan. Ganti bagian kosong saat ini "tags": {} dengan definisi tag Anda sendiri.

{
    "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": {}
}

Setelah Anda menyimpan file lokal, jalankan perintah IoT Edge: Update Device Twin.

Membuat penyebaran dalam skala besar

Setelah mengonfigurasi manifes penyebaran dan tag di perangkat kembar, Anda siap untuk menyebarkan.

  1. Dari menu Tampilan, pilih Palet Perintah dan pilih perintah Azure IoT Edge: Create Deployment at Scale.

  2. Navigasikan ke file JSON manifes penyebaran yang ingin Anda gunakan, dan klik Pilih Manifes Penyebaran Edge.

  3. Berikan nilai seperti yang diminta, dimulai dengan ID penyebaran.

    Menentukan ID penyebaran

    Tentukan nilai untuk parameter ini:

Parameter Deskripsi
Deployment ID Nama penyebaran yang akan dibuat di hub IoT. Beri penyebaran Anda nama unik hingga 128 huruf kecil. Hindari spasi dan karakter tidak valid berikut: & ^ [ ] { } \ | " < > /.
Persyaratan target Masukkan persyaratan target untuk menentukan perangkat mana yang akan ditargetkan pada penyebaran ini. Persyaratan ini didasarkan pada tag kembar perangkat atau properti yang dilaporkan perangkat kembar dan harus sesuai dengan format ekspresi. Contohnya:tags.environment='test' and properties.reported.devicemodel='4000x' 
Prioritas Bilangan bulat positif. Jika dua atau lebih penyebaran ditargetkan pada perangkat yang sama, penyebaran dengan nilai numerik tertinggi untuk Prioritas akan diterapkan.

Setelah menentukan prioritas, terminal harus menampilkan output yang mirip dengan penggambaran berikut:

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

Memantau dan memodifikasi penyebaran

Gunakan portal Microsoft Azure atau Azure CLI untuk memantau, memodifikasi, dan menghapus penyebaran. Keduanya menyediakan metrik tentang penyebaran Anda.

Langkah berikutnya

Pelajari selengkapnya tentang Menyebarkan modul ke perangkat IoT Edge.