Nasazení a sledování IoT Edgech modulů ve velkém měřítku pomocí rozhraní příkazového řádku Azure

Platí pro:  ikona Ano IoT Edge 1,1  ikona ano IoT Edge 1,2

Pomocí rozhraní příkazového řádku Azure můžete vytvořit Azure IoT Edge automatické nasazení a spravovat průběžná nasazení pro mnoho zařízení najednou. Automatická nasazení pro IoT Edge jsou součástí funkce automatické správy zařízení v Azure IoT Hub. Nasazení jsou dynamické procesy, které umožňují nasadit více modulů na více zařízení, sledovat stav a stav modulů a v případě potřeby provádět změny.

V tomto článku nastavíte rozhraní příkazového řádku Azure a rozšíření IoT. Pak se dozvíte, jak nasadit moduly do sady IoT Edge zařízení a jak sledovat jejich průběh pomocí dostupných příkazů rozhraní příkazového řádku.

Požadavky

Konfigurace manifestu nasazení

Manifest nasazení je dokument JSON, který popisuje, které moduly se mají nasadit, způsob, jakým jsou toky dat mezi moduly a požadované vlastnosti v modulu vlákna. Další informace najdete v tématu Naučte se nasazovat moduly a navázat trasy v IoT Edge.

Pokud chcete nasadit moduly pomocí Azure CLI, uložte manifest nasazení místně jako soubor .txt. Cestu k souboru použijete v další části, když spustíte příkaz, který aplikuje konfiguraci na vaše zařízení.

Tady je základní manifest nasazení s jedním modulem jako příklad:

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

Poznámka

Tento ukázkový manifest nasazení používá schéma verze 1,1 pro agenta IoT Edge a centrum. Verze schématu 1,1 byla vydána společně s IoT Edge verzí 1.0.10. Umožňuje funkce, jako je pořadí spouštění modulu a stanovení priorit směrování.

Vrstvené nasazení

Navrstvená nasazení představují typ automatického nasazení, který je možné naskládat navzájem na sebe navrchu. Další informace o vrstveném nasazení najdete v tématu vysvětlení IoT Edge automatického nasazení pro jednotlivá zařízení nebo ve velkém měřítku.

Navrstvená nasazení je možné vytvářet a spravovat pomocí rozhraní příkazového řádku Azure CLI, jako je jakékoli automatické nasazení, a to jenom s několika rozdíly. Po vytvoření vrstveného nasazení funguje rozhraní příkazového řádku Azure pro navrstvená nasazení stejně jako u všech nasazení. Chcete-li vytvořit vrstvené nasazení, přidejte --layered příznak do příkazu CREATE.

Druhý rozdíl je v konstrukci manifestu nasazení. Vzhledem k tomu, že standardní automatické nasazení musí kromě libovolných uživatelských modulů obsahovat moduly modulu runtime systému, navrstvená nasazení mohou obsahovat pouze uživatelské moduly. Navrstvená nasazení také potřebují standardní automatické nasazení na zařízení, aby poskytovaly požadované součásti každého zařízení IoT Edge, jako jsou moduly runtime systému.

Tady je základní navrstvený manifest nasazení s jedním modulem jako příklad:

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

Poznámka

Tento manifest navrstveného nasazení má mírně jiný formát než standardní manifest nasazení. Požadované vlastnosti modulů runtime jsou sbaleny a používají zápis teček. Toto formátování je vyžadováno, aby Azure Portal rozpoznalo navrstvené nasazení. Příklad:

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

Předchozí příklad ukázal nastavení vrstveného nasazení properties.desired pro modul. Pokud toto navrstvené nasazení cílí na zařízení, kde už byl stejný modul použit, přepíše všechny existující požadované vlastnosti. Chcete-li aktualizovat požadované vlastnosti místo jejich přepsání, můžete definovat nový pododdíl. Příklad:

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

Totéž lze také vyjádřit:

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

Poznámka

V současné době musí všechna vrstvená nasazení zahrnovat edgeAgent objekt, který se považuje za platný. I v případě, že vrstvený nasazení aktualizuje pouze vlastnosti modulu, zahrňte prázdný objekt. Příklad: "$edgeAgent":{}. Vrstvené nasazení s prázdným edgeAgent objektem se zobrazí jako cílené v edgeAgent modulu, který není použit.

V souhrnu můžete vytvořit vrstvené nasazení:

  • Přidejte --layered příznak do příkazu Azure CLI Create.
  • Nezahrnujte systémové moduly.
  • V části a použijte úplný zápis tečky $edgeAgent $edgeHub .

Další informace o konfiguraci vláken modulů v vrstveném nasazení najdete v tématu vrstvené nasazení.

Identifikace zařízení pomocí značek

Než budete moct vytvořit nasazení, musíte být schopni určit, která zařízení mají mít vliv. Azure IoT Edge identifikuje zařízení pomocí značek v zařízení.

Každé zařízení může mít několik značek, které můžete definovat jakýmkoli způsobem, který dává smysl pro vaše řešení. Pokud například spravujete areály inteligentních budov, můžete do zařízení přidat následující značky:

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

Další informace o tom, jaké jsou vlákna a značky zařízení, najdete v tématu pochopení a používání nevláken zařízení v IoT Hub.

Vytvoření nasazení

Moduly můžete nasadit do cílových zařízení vytvořením nasazení, které se skládá z manifestu nasazení a dalších parametrů.

Pomocí příkazu AZ IoT Edge Deployment Create vytvořte nasazení:

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

--layeredK vytvoření vrstveného nasazení použijte stejný příkaz s příznakem.

Příkaz Create pro nasazení má následující parametry:

  • --vrstveno. Volitelný příznak k identifikaci nasazení v podobě vrstveného nasazení.
  • --Deployment-ID. Název nasazení, které se vytvoří ve službě IoT Hub. Dejte vašemu nasazení jedinečný název, který bude obsahovat až 128 malých písmen. Vyhněte se mezerám a následujícími neplatnými znaky: & ^ [ ] { } \ | " < > / . Tento parametr je povinný.
  • --Content. Cesta k souboru JSON manifestu nasazení. Tento parametr je povinný.
  • --hub-Name. Název centra IoT, ve kterém bude vytvořeno nasazení. Centrum musí být v aktuálním předplatném. Aktuální předplatné změňte pomocí az account set -s [subscription name] příkazu.
  • --popisky. Páry název-hodnota, které popisují a umožňují sledovat nasazení. Pro názvy a hodnoty mají popisky formát JSON. Příklad: {"HostPlatform":"Linux", "Version:"3.0.1"}.
  • --target-Condition. Podmínka, která určuje, která zařízení budou cílem tohoto nasazení. Tato podmínka je založena na nevyhovujících značkách zařízení nebo na dohlášených vlastnostech zařízení a musí odpovídat formátu výrazu. Příklad: tags.environment='test' and properties.reported.devicemodel='4000x'.
  • --Priorita. Kladné celé číslo. Pokud jsou na jednom zařízení cílené dva nebo více nasazení, uplatní se nasazení s nejvyšší číselnou hodnotou priority.
  • --metriky. Metriky, které dotazují na edgeHub hlášené vlastnosti ke sledování stavu nasazení. Metriky přijímají vstup JSON nebo cestu k souboru. Příklad: '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.

Informace o monitorování nasazení pomocí rozhraní příkazového řádku Azure najdete v tématu monitorování nasazení IoT Edge.

Úprava nasazení

Když upravíte nasazení, změny se okamžitě replikují na všechna cílová zařízení.

Pokud aktualizujete cílovou podmínku, dojde k následujícím aktualizacím:

  • Pokud zařízení nesplňuje starou cílovou podmínku, ale splňuje novou cílovou podmínku, a toto nasazení je nejvyšší prioritou pro toto zařízení, pak se toto nasazení aplikuje na zařízení.
  • Pokud zařízení, které aktuálně používá toto nasazení, už nesplňuje cílovou podmínku, odinstaluje toto nasazení a provede nasazení s další nejvyšší prioritou.
  • Pokud zařízení aktuálně s tímto nasazením nesplňuje cílovou podmínku a nesplňuje cílovou podmínku žádného jiného nasazení, pak na zařízení neproběhne žádná změna. Zařízení dál běží na svých aktuálních modulech v aktuálním stavu, ale už není spravované v rámci tohoto nasazení. Jakmile zařízení splní cílovou podmínku jakéhokoli jiného nasazení, odinstaluje toto nasazení a převezme nové.

Obsah nasazení nemůžete aktualizovat, což zahrnuje moduly a trasy definované v manifestu nasazení. Pokud chcete aktualizovat obsah nasazení, vytvořte nové nasazení, které bude cílit na stejná zařízení s vyšší prioritou. Můžete upravit určité vlastnosti existujícího modulu, včetně cílové podmínky, popisků, metrik a priority.

K aktualizaci nasazení použijte příkaz az iot edge deployment update:

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

Příkaz pro aktualizaci nasazení přijímá následující parametry:

  • --deployment-id. Název nasazení, které existuje v centru IoT.
  • --hub-name. Název centra IoT, ve kterém nasazení existuje. Centrum musí být v aktuálním předplatném. Přepněte na požadované předplatné pomocí příkazu az account set -s [subscription name] .
  • --set. Aktualizujte vlastnost v nasazení. Můžete aktualizovat následující vlastnosti:
    • targetCondition (například targetCondition=tags.location.state='Oregon' )
    • labels
    • priority
  • --add. Přidejte do nasazení novou vlastnost, včetně cílových podmínek nebo popisků.
  • --remove. Odebere existující vlastnost, včetně cílových podmínek nebo popisků.

Odstranění nasazení

Když odstraníte nasazení, všechna zařízení nasazují s nejvyšší prioritou. Pokud vaše zařízení nesplňuje cílovou podmínku žádného jiného nasazení, moduly se při odstranění nasazení odebraly.

Pomocí příkazu az iot edge deployment delete odstraňte nasazení:

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

Příkaz deployment delete přijímá následující parametry:

  • --deployment-id. Název nasazení, které existuje v centru IoT.
  • --hub-name. Název centra IoT, ve kterém nasazení existuje. Centrum musí být v aktuálním předplatném. Přepněte na požadované předplatné pomocí příkazu az account set -s [subscription name] .

Další kroky

Další informace o nasazení modulů do IoT Edge zařízení.