Bagikan melalui


Menerapkan dan memantau modul IoT Edge dalam skala besar menggunakan Azure CLI

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5

Penting

IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Gunakan Azure CLI untuk membuat penyebaran otomatis Azure IoT Edge dan mengelola penyebaran untuk banyak perangkat sekaligus. Penyebaran otomatis untuk IoT Edge adalah bagian dari fitur manajemen perangkat Azure IoT Hub. Penyebaran memungkinkan Anda menyebarkan beberapa modul ke beberapa perangkat, melacak status dan kesehatan modul, dan membuat perubahan saat diperlukan.

Dalam artikel ini, Anda menyiapkan Azure CLI dan ekstensi IoT. Kemudian, Anda menyebarkan modul ke sekumpulan perangkat IoT Edge dan memantau kemajuan dengan menggunakan perintah CLI.

Prasyarat

  • IoT Hub di langganan Azure Anda.

  • Satu atau beberapa perangkat IoT Edge.

    Jika Anda tidak menyiapkan perangkat IoT Edge, Anda dapat membuatnya di komputer virtual Azure. Ikuti langkah-langkah di salah satu artikel panduan memulai ini: Membuat perangkat Linux virtual atau Membuat perangkat Windows virtual.

  • Azure CLI di lingkungan Anda. Versi Azure CLI Anda harus 2.0.70 atau lebih tinggi. Gunakan az --version untuk memeriksa. Versi ini mendukung perintah ekstensi az dan memperkenalkan kerangka kerja perintah Knack.

  • Ekstensi IoT untuk Azure CLI.

Mengonfigurasi manifes penerapan

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

Untuk menyebarkan modul menggunakan Azure CLI, simpan manifes penyebaran secara lokal sebagai file .txt. Anda akan menggunakan jalur file di bagian berikutnya saat menjalankan perintah untuk menerapkan konfigurasi ke perangkat Anda.

Berikut adalah manifes penyebaran dasar dengan satu modul sebagai contoh.

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

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. Ini memungkinkan Anda menggunakan fitur seperti urutan startup modul dan prioritas rute.

Penyebaran berlapis

Penyebaran berlapis adalah jenis penyebaran otomatis yang dapat Anda tumpukan di atas satu sama lain. Untuk informasi selengkapnya tentang penyebaran berlapis, lihat Memahami penyebaran otomatis IoT Edge untuk satu perangkat atau dalam skala besar.

Anda dapat membuat dan mengelola penyebaran berlapis dengan Azure CLI seperti penyebaran otomatis apa pun, hanya dengan beberapa perbedaan. Setelah Anda membuat penyebaran berlapis, Azure CLI berfungsi untuk penyebaran berlapis sama seperti untuk penyebaran apa pun. Untuk membuat penyebaran berlapis, tambahkan bendera --layered ke perintah buat.

Perbedaan kedua adalah bagaimana Anda membangun manifes penyebaran. Penyebaran otomatis standar harus menyertakan modul runtime sistem dan modul pengguna apa pun. Penyebaran berlapis hanya dapat mencakup modul pengguna. Penerapan berlapis juga memerlukan penerapan otomatis standar pada perangkat untuk memasok komponen yang diperlukan dari setiap perangkat IoT Edge, seperti modul runtime sistem.

Berikut adalah manifes penyebaran berlapis dasar dengan satu modul sebagai contoh.

{
  "content": {
    "modulesContent": {
      "$edgeAgent": {
        "properties.desired.modules.SimulatedTemperatureSensor": {
          "settings": {
            "image": "mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.5",
              "createOptions": "{}"
          },
          "type": "docker",
          "status": "running",
          "restartPolicy": "always",
          "version": "1.5"
        }
      },
      "$edgeHub": {
        "properties.desired.routes.upstream": "FROM /messages/* INTO $upstream"
      },
      "SimulatedTemperatureSensor": {
        "properties.desired": {
          "SendData": true,
          "SendInterval": 5
        }
      }
    }
  }
}

Catatan

Manifes penerapan berlapis ini memiliki format yang sedikit berbeda dari manifes penerapan standar. Properti yang diinginkan dari modul runtime diciutkan menggunakan notasi titik. Pemformatan ini diperlukan agar portal Microsoft Azure mengenali penyebaran berlapis. Contohnya:

  • properties.desired.modules.<module_name>
  • properties.desired.routes.<route_name>

Contoh sebelumnya menunjukkan pengaturan berlapis penyebaran properties.desired untuk modul. Jika penerapan berlapis ini ditujukan pada perangkat di mana modul yang sama sudah diterapkan, maka akan menggantikan konfigurasi yang diinginkan yang ada. Untuk memperbarui properti yang diinginkan tanpa menimpanya, tentukan sebuah subbagian baru. Contohnya:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties": {
    "SendData": true,
    "SendInterval": 5
  }
}

Anda juga dapat mengekspresikan hal yang sama dengan sintaks berikut:

"SimulatedTemperatureSensor": {
  "properties.desired.layeredProperties.SendData" : true,
  "properties.desired.layeredProperties.SendInterval": 5
}

Catatan

Saat ini, semua penyebaran berlapis harus menyertakan objek edgeAgent agar valid. Bahkan jika penyebaran berlapis hanya memperbarui properti modul, sertakan objek kosong. Misalnya: "$edgeAgent":{}. Penyebaran berlapis dengan objek kosong edgeAgent ditampilkan sebagai ditargetkan dalam modul kembar edgeAgent , tidak diterapkan.

Untuk membuat penyebaran berlapis:

  • Tambahkan bendera --layered ke perintah pembuatan Azure CLI.
  • Jangan sertakan modul sistem.
  • Gunakan notasi titik penuh pada $edgeAgent dan $edgeHub.

Untuk informasi selengkapnya tentang mengonfigurasi modul kembar dalam penerapan berlapis, lihat Penerapan berlapis.

Mengidentifikasi perangkat menggunakan tag

Sebelum membuat penyebaran, Anda perlu menentukan perangkat mana yang ingin Anda pengaruhi. Azure IoT Edge mengidentifikasi perangkat menggunakan tag di perangkat kembar.

Setiap perangkat dapat memiliki beberapa tag yang ditentukan dengan cara apa pun yang masuk akal untuk solusi Anda. Misalnya, jika Anda mengelola kampus bangunan pintar, Anda dapat menambahkan tag berikut ke perangkat:

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

Untuk informasi selengkapnya tentang perangkat kembar dan tag, lihat Memahami dan menggunakan perangkat kembar di IoT Hub.

Membuat penyebaran

Sebarkan modul ke perangkat target dengan membuat penyebaran yang memiliki manifes penyebaran dan parameter lainnya.

Jalankan perintah az iot edge deployment create untuk membuat penyebaran:

az iot edge deployment create --deployment-id <deployment-id> --hub-name <hub-name> --content <file-path> --labels "<labels>" --target-condition "<target-query>" --priority <priority>

Tambahkan --layered flag untuk membuat penyebaran berlapis.

Perintah az iot edge deployment create menggunakan parameter berikut:

  • --layered: Bendera opsional yang mengidentifikasi penyebaran sebagai penyebaran berlapis.
  • --deployment-id: Nama deployment yang dibuat di IoT hub. Gunakan nama unik dengan hingga 128 huruf kecil. Hindari spasi dan karakter yang tidak valid ini: & ^ [ ] { } \ | " < > /. Parameter ini diperlukan.
  • --content: Jalur file ke manifes penyebaran JSON. Parameter ini diperlukan.
  • --hub-name: Nama hub IoT tempat penyebaran dibuat. Hub harus berada dalam langganan saat ini. Ubah langganan Anda saat ini dengan menjalankan az account set -s <subscription-name>.
  • --labels: Pasangan nama/nilai yang menjelaskan dan membantu Anda melacak penyebaran. Label menggunakan pemformatan JSON untuk nama dan nilai. Misalnya: {"HostPlatform":"Linux", "Version":"3.0.1"}.
  • --target-condition: Kondisi yang menentukan perangkat mana yang ditargetkan dengan penyebaran ini. Kondisi ini didasarkan pada tag kembar perangkat atau properti yang dilaporkan perangkat kembar, dan harus cocok dengan format ekspresi. Misalnya: tags.environment='test' and properties.reported.devicemodel='4000x'. Jika Anda tidak menentukan kondisi target, penyebaran tidak diterapkan ke perangkat apa pun.
  • --priority: Bilangan bulat positif. Jika dua penyebaran atau lebih menargetkan perangkat yang sama, penyebaran dengan prioritas tertinggi berlaku.
  • --metrics: Metrik yang mengkueri edgeHub properti yang dilaporkan untuk melacak status penyebaran. Metrik menggunakan input JSON atau jalur file. Misalnya: '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.

Untuk memantau penyebaran dengan Azure CLI, lihat Memantau penyebaran IoT Edge.

Catatan

Saat Anda membuat penyebaran IoT Edge baru, dibutuhkan waktu hingga 5 menit bagi IoT Hub untuk memproses konfigurasi baru dan mengirim properti baru yang diinginkan ke perangkat yang ditargetkan.

Mengubah penyebaran

Saat Anda mengubah penyebaran, perubahan segera mereplikasi ke semua perangkat yang ditargetkan.

Jika Anda memperbarui kondisi target, perubahan berikut terjadi:

  • Jika perangkat tidak memenuhi kondisi target lama tetapi memenuhi kondisi target baru, dan penyebaran ini adalah prioritas tertinggi untuk perangkat tersebut, penyebaran ini diterapkan ke perangkat.
  • Jika perangkat yang saat ini menjalankan penyebaran ini tidak lagi memenuhi kondisi target, perangkat akan mencopot pemasangan penyebaran ini dan beralih ke penyebaran prioritas tertinggi berikutnya.
  • Jika perangkat yang saat ini menjalankan penyebaran ini tidak lagi memenuhi kondisi target dan tidak memenuhi kondisi target penyebaran lain, tidak ada perubahan yang terjadi pada perangkat. Perangkat terus menjalankan modul-modul dalam status saat ini tetapi tidak lagi dikelola sebagai bagian dari penerapan ini. Setelah perangkat memenuhi kondisi target dari penyebaran lain, perangkat menghapus implementasi ini dan menyerap yang baru.

Anda tidak dapat memperbarui konten penyebaran, yang mencakup modul dan rute yang ditentukan dalam manifes penyebaran. Untuk memperbarui konten penyebaran, buat penyebaran baru yang menargetkan perangkat yang sama dengan prioritas yang lebih tinggi. Anda dapat memodifikasi properti tertentu dari modul yang ada, termasuk kondisi target, label, metrik, dan prioritas.

Gunakan perintah pembaruan penyebaran az iot edge untuk memperbarui penyebaran:

az iot edge deployment update --deployment-id <deployment-id> --hub-name <hub-name> --set <property1.property2='value'>

Perintah pembaruan penyebaran menggunakan parameter berikut:

  • --deployment-id: Nama penyebaran di IoT Hub.
  • --hub-name: Nama hub IoT tempat penyebaran berada. Hub harus berada dalam langganan saat ini. Untuk beralih ke langganan lain, jalankan az account set -s <subscription-name>.
  • --set: Ubah properti dalam implementasi. Anda bisa mengubah properti berikut:
    • targetCondition (misalnya, targetCondition=tags.location.state='Oregon')
    • labels
    • priority
  • --add: Tambahkan properti baru ke penyebaran, termasuk kondisi target atau label.
  • --remove: Hapus properti yang ada, termasuk kondisi target atau label.

Menghapus penyebaran

Saat Anda menghapus penyebaran, perangkat menggunakan penyebaran prioritas tertinggi berikutnya. Jika perangkat tidak memenuhi kondisi target penyebaran lain, modul tidak akan dihapus saat Anda menghapus penyebaran.

Jalankan perintah az iot edge deployment delete untuk menghapus penyebaran:

az iot edge deployment delete --deployment-id <deployment-id> --hub-name <hub-name>

Perintah deployment delete menggunakan parameter berikut:

  • --deployment-id - Nama penyebaran yang ada di IoT hub.
  • --hub-name. Nama IoT hub tempat penyebaran berada. Hub harus berada dalam langganan saat ini. Beralih ke langganan yang diinginkan dengan perintah az account set -s [subscription name].

Langkah berikutnya

Pelajari selengkapnya tentang Menyebarkan modul ke perangkat IoT Edge.