IoT Edge-modulok üzembe helyezése és monitorozása nagy méretekben az Azure CLI használatával

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5 IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Azure IoT Edge-alapú automatikus üzembe helyezés létrehozása az Azure CLI használatával számos eszköz folyamatos üzembe helyezésének egyidejű kezeléséhez. Az IoT Edge automatikus üzembe helyezései az Azure IoT Hub eszközfelügyeleti funkciójának részét képezik. Az üzembe helyezés olyan dinamikus folyamatok, amelyek lehetővé teszik több modul több eszközön való üzembe helyezését, a modulok állapotának és állapotának nyomon követését, valamint szükség esetén a módosítások elvégzését.

Ebben a cikkben az Azure CLI-t és az IoT-bővítményt állítja be. Ezután megtudhatja, hogyan helyezhet üzembe modulokat az IoT Edge-eszközök egy csoportjában, és hogyan figyelheti az előrehaladást a rendelkezésre álló CLI-parancsokkal.

Előfeltételek

  • IoT Hub az Azure-előfizetésben.

  • Egy vagy több IoT Edge-eszköz.

    Ha nincs beállítva IoT Edge-eszköz, létrehozhat egyet egy Azure-beli virtuális gépen. Kövesse az alábbi rövid útmutatók lépéseit: Virtuális Linux-eszköz létrehozása vagy virtuális Windows-eszköz létrehozása.

  • Az Azure CLI a környezetben. Az Azure CLI-verziónak 2.0.70-es vagy újabb verziónak kell lennie. A verziószámot az az --version paranccsal ellenőrizheti. Ez a verzió támogatja az „az” bővítményparancsokat, és ebben a verzióban került bevezetésre a Knack parancskeretrendszer.

  • Az Azure CLI IoT-bővítménye.

Üzembehelyezési jegyzék konfigurálása

Az üzembehelyezési jegyzék egy JSON-dokumentum, amely leírja, hogy mely modulokat kell üzembe helyezni, hogyan áramlik az adatforgalom a modulok között, valamint a modul ikerpéldányainak kívánt tulajdonságait. További információ: Modulok üzembe helyezése és útvonalak létrehozása az IoT Edge-ben.

Ha modulokat szeretne üzembe helyezni az Azure CLI használatával, mentse az üzembehelyezési jegyzékfájlt helyileg .txt fájlként. A következő szakaszban található fájl elérési útját használja a parancs futtatásakor a konfiguráció eszközre való alkalmazásához.

Íme egy alapszintű üzembehelyezési jegyzék egy modullal, példaként:

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

Feljegyzés

Ez a minta üzembehelyezési jegyzék az IoT Edge-ügynökhöz és -központhoz az 1.1-es sémaverziót használja. A séma 1.1-es verziója az IoT Edge 1.0.10-es verziójával együtt jelent meg. Lehetővé teszi az olyan funkciókat, mint a modul indítási sorrendje és az útvonalak rangsorolása.

Rétegzett üzembe helyezés

A rétegzett üzemelő példányok olyan automatikus üzembe helyezési típusok, amelyek egymásra halmozottak. A rétegzett üzemelő példányokról további információt az IoT Edge automatikus üzembe helyezésének ismertetése önálló eszközökhöz vagy nagy méretekben című témakörben talál.

A rétegzett üzemelő példányok az Azure CLI-vel hozhatók létre és kezelhetők, mint bármely automatikus üzembe helyezés, mindössze néhány különbséggel. A rétegzett üzembe helyezés létrehozása után az Azure CLI ugyanúgy működik a rétegzett üzemelő példányok esetében, mint bármely üzembe helyezésnél. Rétegzett üzembe helyezés létrehozásához adja hozzá a --layered jelölőt a létrehozási parancshoz.

A második különbség az üzembehelyezési jegyzék felépítése. Míg a standard automatikus üzembe helyezésnek a felhasználói modulokon kívül tartalmaznia kell a rendszer futtatókörnyezeti moduljait, a rétegzett központi telepítések csak felhasználói modulokat tartalmazhatnak. A rétegzett üzemelő példányoknak szabványos automatikus üzembe helyezésre is szükségük van egy eszközön, hogy minden IoT Edge-eszköz szükséges összetevőit, például a rendszer futtatókörnyezeti moduljait ellássa.

Íme egy alapszintű rétegzett üzembehelyezési jegyzék egy modullal, példaként:

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

Feljegyzés

Ez a rétegzett üzembehelyezési jegyzék kissé eltér a szabványos üzembehelyezési jegyzéktől. A futtatókörnyezeti modulok kívánt tulajdonságai össze vannak csukva, és pont jelölést használnak. Ez a formázás szükséges ahhoz, hogy az Azure Portal felismerjen egy rétegzett üzembe helyezést. Példa:

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

Az előző példa egy modul rétegzett üzembehelyezési beállítását properties.desired mutatta be. Ha ez a réteges üzembe helyezés egy olyan eszközt céloz meg, amelyen már alkalmazták ugyanazt a modult, felülírná a meglévő kívánt tulajdonságokat. Ha felülírás helyett frissíteni szeretné a kívánt tulajdonságokat, definiálhat egy új alszakaszt. Példa:

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

Ugyanez kifejezhető a következőkkel is:

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

Feljegyzés

Jelenleg minden réteges üzembe helyezésnek tartalmaznia kell egy edgeAgent érvényesnek tekinthető objektumot. Még akkor is, ha egy rétegzett üzembe helyezés csak a modul tulajdonságait frissíti, tartalmazzon egy üres objektumot. Például: "$edgeAgent":{} Az üres edgeAgent objektummal rendelkező rétegzett üzembe helyezés a modul ikerpéldányában edgeAgent célzottkéntjelenik meg, nem alkalmazva.

Összefoglalva, rétegzett üzembe helyezés létrehozása:

  • Adja hozzá a jelzőt --layered az Azure CLI létrehozási parancsához.
  • Ne tartalmazzon rendszermodulokat.
  • Használjon teljes pont jelölést az $edgeAgent and $edgeHub.

A modulok ikerpéldányainak réteges telepítésekben való konfigurálásával kapcsolatos további információkért lásd a rétegzett üzembe helyezést ismertető témakört.

Eszközök azonosítása címkék használatával

Mielőtt létrehozna egy üzembe helyezést, meg kell adnia, hogy mely eszközöket szeretné érinteni. Az Azure IoT Edge az ikereszköz címkéivel azonosítja az eszközöket.

Minden eszköz több olyan címkét is tartalmazhat, amelyet bármilyen módon definiálhat, ami logikus a megoldáshoz. Ha például intelligens épületek campusát felügyeli, az alábbi címkéket adhat hozzá egy eszközhöz:

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

Az ikereszközökről és címkékről további információt az IoT Hubban található ikereszközök ismertetése és használata című témakörben talál.

Üzembe helyezés létrehozása

A modulokat a céleszközökre úgy helyezheti üzembe, hogy létrehoz egy üzembe helyezési jegyzékből és más paraméterekből álló üzembe helyezést.

Az az iot edge deployment create paranccsal hozzon létre egy üzembe helyezést:

az iot edge deployment create --deployment-id [deployment id] --hub-name [hub name] --content [file path] --labels "[labels]" --target-condition "[target query]" --priority [int]

Használja ugyanazt a parancsot a --layered jelölővel egy rétegzett üzembe helyezés létrehozásához.

Az üzembe helyezési parancs a következő paramétereket használja:

  • --rétegzett. Választható jelző az üzembe helyezés rétegzett üzemelő példányként való azonosításához.
  • --deployment-id. Az IoT Hubban létrehozandó üzembe helyezés neve. Adjon egyedi nevet az üzembe helyezésnek, amely legfeljebb 128 kisbetűs lehet. Kerülje a szóközöket és a következő érvénytelen karaktereket: & ^ [ ] { } \ | " < > /. Ez a paraméter kötelező.
  • --tartalom. Az üzembehelyezési jegyzék JSON-fájljának elérési útja. Ez a paraméter kötelező.
  • --hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létrejön. A központnak az aktuális előfizetésben kell lennie. Módosítsa az aktuális előfizetését a az account set -s [subscription name] parancs használatával.
  • --labels. Név-érték párok, amelyek leírják és nyomon követik az üzemelő példányokat. A címkék JSON-formázást használnak a nevekhez és értékekhez. Például: {"HostPlatform":"Linux", "Version:"3.0.1"}
  • --célfeltétel. Az a feltétel, amely meghatározza, hogy az üzembe helyezés mely eszközöket célozza meg. A feltétel az ikereszköz-címkéken vagy az ikereszköz jelentett tulajdonságain alapul, és meg kell egyeznie a kifejezés formátumával. Például: tags.environment='test' and properties.reported.devicemodel='4000x' Ha a célfeltétel nincs megadva, akkor az üzembe helyezés egyetlen eszközre sem lesz alkalmazva.
  • --priority. Pozitív egész szám. Ha ugyanazon az eszközön két vagy több üzembe helyezés van megcélzva, a legmagasabb numerikus értékkel rendelkező üzembe helyezés lesz érvényben.
  • --metrikák. Metrikák, amelyek lekérdezik a edgeHub jelentett tulajdonságokat az üzemelő példány állapotának nyomon követéséhez. A metrikák JSON-bemenetet vagy fájlelérési utat vesznek igénybe. Például: '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'

Ha az Azure CLI használatával szeretne monitorozni egy üzembe helyezést, tekintse meg az IoT Edge-környezetek monitorozását.

Feljegyzés

Új IoT Edge-telepítés létrehozásakor néha akár 5 percet is igénybe vehet, amíg az IoT Hub feldolgozzák az új konfigurációt, és propagálja az új kívánt tulajdonságokat a megcélzott eszközökre.

Központi telepítés módosítása

Az üzembe helyezés módosításakor a módosítások azonnal replikálódnak az összes megcélzott eszközre.

Ha frissíti a célfeltételt, a következő frissítések történnek:

  • Ha egy eszköz nem felel meg a régi célfeltételnek, de megfelel az új célfeltételnek, és ez az üzembe helyezés az adott eszköz legmagasabb prioritása, akkor a rendszer ezt az üzembe helyezést alkalmazza az eszközre.
  • Ha egy jelenleg az üzemelő példányt futtató eszköz már nem felel meg a célfeltételnek, eltávolítja ezt az üzembe helyezést, és a következő legmagasabb prioritású üzembe helyezést veszi igénybe.
  • Ha egy jelenleg az üzemelő példányt futtató eszköz már nem felel meg a célfeltételnek, és nem felel meg a többi központi telepítés célfeltételének, akkor az eszközön nem történik változás. Az eszköz továbbra is a jelenlegi állapotában futtatja az aktuális moduljait, de az üzembe helyezés részeként már nem kezelik. Miután az eszköz megfelel bármely más üzembe helyezés célfeltételének, eltávolítja ezt az üzembe helyezést, és felveszi az újat.

Nem frissítheti az üzembe helyezés tartalmát, amely tartalmazza az üzembe helyezési jegyzékben meghatározott modulokat és útvonalakat. Ha frissíteni szeretné az üzembe helyezés tartalmát, hozzon létre egy új üzembe helyezést, amely ugyanazokat az eszközöket célozza meg magasabb prioritással. Egy meglévő modul bizonyos tulajdonságait módosíthatja, beleértve a célfeltételt, a címkéket, a metrikákat és a prioritást.

Az az iot edge deployment update paranccsal frissítheti az üzemelő példányt:

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

Az üzembehelyezési frissítési parancs a következő paramétereket használja:

  • --deployment-id. Az IoT Hubban található üzembe helyezés neve.
  • --hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létezik. A központnak az aktuális előfizetésben kell lennie. Váltson a kívánt előfizetésre a parancs használatával az account set -s [subscription name].
  • --set. Frissítsen egy tulajdonságot az üzembe helyezés során. A következő tulajdonságokat frissítheti:
    • targetCondition (például: targetCondition=tags.location.state='Oregon')
    • labels
    • priority
  • --add. Adjon hozzá egy új tulajdonságot az üzembe helyezéshez, beleértve a célfeltételeket vagy címkéket.
  • --remove. Meglévő tulajdonság eltávolítása, beleértve a célfeltételeket vagy címkéket.

Üzembe helyezés törlése

Az üzembe helyezés törlésekor minden eszköz a következő legmagasabb prioritású üzembe helyezést veszi igénybe. Ha az eszközök nem felelnek meg a többi üzembe helyezés célfeltételének, a modulok nem törlődnek az üzembe helyezés törlésekor.

Az az iot edge deployment delete paranccsal törölhet egy üzembe helyezést:

az iot edge deployment delete --deployment-id [deployment id] --hub-name [hub name]

A deployment delete parancs a következő paramétereket használja:

  • --deployment-id. Az IoT Hubban található üzembe helyezés neve.
  • --hub-name. Annak az IoT Hubnak a neve, amelyben az üzembe helyezés létezik. A központnak az aktuális előfizetésben kell lennie. Váltson a kívánt előfizetésre a parancs használatával az account set -s [subscription name].

Következő lépések

További információ a modulok IoT Edge-eszközökön való üzembe helyezéséről.