Nasazení a monitorování modulů IoT Edge ve velkém měřítku pomocí Azure CLI

Platí pro:IoT Edge 1.4 checkmark IoT Edge 1.4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Vytvořte automatické nasazení Azure IoT Edge pomocí Azure CLI ke správě probíhajících nasazení pro mnoho zařízení najednou. Automatické nasazení pro IoT Edge jsou součástí funkce správy zařízení ve službě Azure IoT Hub. Nasazení jsou dynamické procesy, které umožňují nasadit více modulů do 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 Azure CLI a rozšíření IoT. Pak se dozvíte, jak nasadit moduly do sady zařízení IoT Edge a monitorovat průběh pomocí dostupných příkazů rozhraní příkazového řádku.

Předpoklady

  • Centrum IoT ve vašem předplatném Azure

  • Jedno nebo více zařízení IoT Edge.

    Pokud nemáte nastavené zařízení IoT Edge, můžete ho vytvořit ve virtuálním počítači Azure. Postupujte podle kroků v jednom z těchto článků rychlého startu: Vytvoření virtuálního zařízení s Linuxem nebo vytvoření virtuálního zařízení s Windows.

  • Azure CLI ve vašem prostředí. Vaše verze Azure CLI musí být 2.0.70 nebo novější. Ke kontrole použijte příkaz az --version. Tato verze podporuje příkazy rozšíření az a zavádí příkazové rozhraní Knack.

  • Rozšíření IoT pro Azure CLI

Konfigurace manifestu nasazení

Manifest nasazení je dokument JSON, který popisuje, které moduly se mají nasadit, jak data proudí mezi moduly a požadované vlastnosti dvojčat modulů. Další informace najdete v tématu O nasazení modulů a vytváření tras v IoT Edge.

Pokud chcete nasadit moduly pomocí Azure CLI, uložte manifest nasazení místně jako soubor .txt. Cestu k souboru v další části použijete při spuštění příkazu pro použití konfigurace na zařízení.

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

{
  "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 a centrum IoT Edge. Verze schématu 1.1 byla vydána společně s IoT Edge verze 1.0.10. Umožňuje funkce, jako je pořadí spuštění modulu a stanovení priorit tras.

Vrstvené nasazení

Vrstvené nasazení jsou typem automatického nasazení, které je možné vzájemně na sebe naskládat. Další informace o vrstvených nasazeních najdete v tématu Vysvětlení automatických nasazení IoT Edge pro jednotlivá zařízení nebo ve velkém měřítku.

Vrstvené nasazení je možné vytvářet a spravovat pomocí Azure CLI stejně jako jakékoli automatické nasazení s několika rozdíly. Po vytvoření vrstveného nasazení funguje Azure CLI pro vrstvené nasazení stejně jako u jakéhokoli nasazení. Pokud chcete vytvořit vrstvené nasazení, přidejte --layered příznak do příkazu create.

Druhý rozdíl spočívá ve konstrukci manifestu nasazení. Zatímco standardní automatické nasazení musí obsahovat moduly modulu runtime systému kromě všech uživatelských modulů, vrstvené nasazení můžou obsahovat pouze uživatelské moduly. Vrstvené nasazení také potřebují standardní automatické nasazení na zařízení, které poskytuje požadované součásti každého zařízení IoT Edge, jako jsou moduly modulu runtime systému.

Tady je základní vícevrstvý manifest nasazení s jedním modulem jako příkladem:

{
  "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 nasazení ve vrstvené vrstvě má trochu jiný formát než standardní manifest nasazení. Požadované vlastnosti modulů modulu runtime jsou sbalené a používají zápis tečky. Toto formátování se vyžaduje, aby Azure Portal rozpoznal vrstvené nasazení. Příklad:

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

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

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

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

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

Poznámka:

V současné době musí všechna vrstvovaná nasazení obsahovat edgeAgent objekt, který má být považován za platný. I když 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íl ve edgeAgent dvojčeti modulu, které se nepoužije.

Stručně řečeno, vytvoření vrstveného nasazení:

  • --layered Přidejte příznak do příkazu create v Azure CLI.
  • Nezahrnujte systémové moduly.
  • Použijte plný zápis tečky pod $edgeAgent a $edgeHub.

Další informace o konfiguraci dvojčat modulů ve vrstvených nasazeních najdete v tématu Nasazení vrstvené.

Identifikace zařízení pomocí značek

Než budete moct vytvořit nasazení, musíte být schopni určit, která zařízení chcete ovlivnit. Azure IoT Edge identifikuje zařízení pomocí značek ve dvojčeti zařízení.

Každé zařízení může mít více značek, které definujete jakýmkoli způsobem, který dává smysl pro vaše řešení. Pokud například spravujete areál 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 dvojčatech a značkách zařízení najdete v tématu Principy a používání dvojčat zařízení ve službě IoT Hub.

Vytvoření nasazení

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

K vytvoření nasazení použijte příkaz az iot edge deployment create:

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

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

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

  • --vrstvený. Volitelný příznak pro identifikaci nasazení jako vrstveného nasazení.
  • --deployment-id. Název nasazení, které se vytvoří v centru IoT. Zadejte jedinečný název nasazení, který má až 128 malých písmen. Vyhněte se mezerám a následujícím neplatným znakům: & ^ [ ] { } \ | " < > /. Tento parametr je povinný.
  • --content. Cesta k souboru JSON manifestu nasazení Tento parametr je povinný.
  • --hub-name. Název centra IoT, ve kterém se nasazení vytvoří. Centrum musí být v aktuálním předplatném. Pomocí příkazu změňte aktuální předplatné az account set -s [subscription name] .
  • --labels. Páry názvů a hodnot, které popisují a pomáhají sledovat vaše nasazení. Popisky přebírají formátování JSON pro názvy a hodnoty. Příklad: {"HostPlatform":"Linux", "Version:"3.0.1"}.
  • --target-condition. Podmínka, která určuje, na která zařízení budou cílem tohoto nasazení. Podmínka je založená na značkách dvojčat zařízení nebo ohlášených vlastnostech dvojčete zařízení a měla by odpovídat formátu výrazu. Příklad: tags.environment='test' and properties.reported.devicemodel='4000x'. Pokud není zadaná cílová podmínka, nasazení se nepoužije na žádná zařízení.
  • --priority. Kladné celé číslo. Pokud jsou dvě nebo více nasazení cílená na stejné zařízení, použije se nasazení s nejvyšší číselnou hodnotou pro prioritu.
  • --metrics. Metriky, které se dotazem na edgeHub ohlášené vlastnosti sledují stav nasazení Metriky přebírají vstup JSON nebo cestu k souboru. Příklad: '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.

Pokud chcete monitorovat nasazení pomocí Azure CLI, přečtěte si téma Monitorování nasazení IoT Edge.

Poznámka:

Když se vytvoří nové nasazení IoT Edge, může někdy trvat až 5 minut, než IoT Hub zpracuje novou konfiguraci a rozšíří nové požadované vlastnosti na cílová zařízení.

Úprava nasazení

Když upravíte nasazení, změny se okamžitě replikují do všech cílových 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 pro toto zařízení nejvyšší prioritou, použije se toto nasazení na zařízení.
  • Pokud zařízení, které toto nasazení aktuálně spouští, už nesplňuje cílovou podmínku, odinstaluje toto nasazení a převezme nasazení s nejvyšší prioritou.
  • Pokud zařízení, na kterém je toto nasazení aktuálně spuštěné, nesplňuje cílovou podmínku a nesplňuje cílovou podmínku žádného jiného nasazení, nedojde na zařízení k žádné změně. Zařízení pokračuje v provozu svých aktuálních modulů v aktuálním stavu, ale už není spravováno 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é nasazení.

Obsah nasazení nelze aktualizovat, což zahrnuje moduly a trasy definované v manifestu nasazení. Pokud chcete aktualizovat obsah nasazení, vytvořte nové nasazení, které cílí 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 aktualizace nasazení má následující parametry:

  • --deployment-id. Název nasazení, které existuje v Centru IoT.
  • --hub-name. Název ioT Hubu, ve kterém nasazení existuje. Centrum musí být v aktuálním předplatném. Pomocí příkazu az account set -s [subscription name]přepněte na požadované předplatné .
  • --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. Odeberte existující vlastnost, včetně cílových podmínek nebo popisků.

Odstranění nasazení

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

K odstranění nasazení použijte příkaz az iot edge deployment delete:

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 ioT Hubu, ve kterém nasazení existuje. Centrum musí být v aktuálním předplatném. Pomocí příkazu az account set -s [subscription name]přepněte na požadované předplatné .

Další kroky

Přečtěte si další informace o nasazení modulů do zařízení IoT Edge.