Nasazení a monitorování modulů IoT Edge ve velkém měřítku pomocí Azure CLIDeploy and monitor IoT Edge modules at scale using the Azure CLI

Pomocí rozhraní příkazového řádku Azure můžete vytvořit IoT Edge automatické nasazení , abyste mohli spravovat průběžná nasazení v mnoha zařízeních najednou.Create an IoT Edge automatic deployment using the Azure command-line interface to manage ongoing deployments for many devices at once. Automatická nasazení pro IoT Edge jsou součástí funkce automatické správy zařízení v IoT Hub.Automatic deployments for IoT Edge are part of the automatic device management feature of 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.Deployments are dynamic processes that enable you to deploy multiple modules to multiple devices, track the status and health of the modules, and make changes when necessary.

Další informace najdete v tématu vysvětlení IoT Edge automatického nasazení pro jednotlivá zařízení nebo ve velkém měřítku.For more information, see Understand IoT Edge automatic deployments for single devices or at scale.

V tomto článku se nastavení rozhraní příkazového řádku Azure a rozšíření IoT.In this article, you set up Azure CLI and the IoT extension. Pak se dozvíte, jak nasadit moduly do sady IoT Edge zařízení a jak sledovat průběh pomocí dostupných příkazů rozhraní příkazového řádku.You then learn how to deploy modules to a set of IoT Edge devices and monitor the progress using the available CLI commands.

Požadavky na rozhraní příkazového řádkuCLI Prerequisites

  • Služby IoT hub ve vašem předplatném Azure.An IoT hub in your Azure subscription.
  • Zařízení IoT Edge nainstalován modul runtime IoT Edge.IoT Edge devices with the IoT Edge runtime installed.
  • Azure CLI ve vašem prostředí.Azure CLI in your environment. Minimálně musí být vaše Azure CLI verze 2.0.24 nebo novější.At a minimum, your Azure CLI version must be 2.0.24 or above. Ke kontrole použijte příkaz az --version.Use az --version to validate. Tato verze podporuje příkazy rozšíření az a zavádí příkazové rozhraní Knack.This version supports az extension commands and introduces the Knack command framework.
  • Rozšíření IoT pro Azure CLI.The IoT extension for Azure CLI.

Konfigurace manifestu nasazeníConfigure a deployment manifest

Manifest nasazení je dokument JSON, který popisuje, které moduly chcete nasadit, tok dat mezi moduly a požadované vlastnosti dvojčat modulů.A deployment manifest is a JSON document that describes which modules to deploy, how data flows between the modules, and desired properties of the module twins. Další informace najdete v tématu Naučte se nasazovat moduly a navázat trasy v IoT Edge.For more information, see Learn how to deploy modules and establish routes in IoT Edge.

Můžete nasadit moduly pomocí Azure CLI, uložte jako soubor .txt místně manifest nasazení.To deploy modules using Azure CLI, save the deployment manifest locally as a .txt file. Cestu k souboru použijete v další části, když spustíte příkaz, který aplikuje konfiguraci na vaše zařízení.You use the file path in the next section when you run the command to apply the configuration to your device.

Tady je manifest základní nasazení s jeden modul jako příklad:Here's a basic deployment manifest with one module as an example:

{
  "content": {
    "modulesContent": {
      "$edgeAgent": {
        "properties.desired": {
          "schemaVersion": "1.0",
          "runtime": {
            "type": "docker",
            "settings": {
              "minDockerVersion": "v1.25",
              "loggingOptions": "",
              "registryCredentials": {}
            }
          },
          "systemModules": {
            "edgeAgent": {
              "type": "docker",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
                "createOptions": "{}"
              }
            },
            "edgeHub": {
              "type": "docker",
              "status": "running",
              "restartPolicy": "always",
              "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.0",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
              }
            }
          },
          "modules": {
            "SimulatedTemperatureSensor": {
              "version": "1.0",
              "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
        }
      }
    }
  }
}

Vrstvené nasazeníLayered deployment

Navrstvená nasazení představují typ automatického nasazení, který je možné naskládat navzájem na sebe navrchu.Layered deployments are a type of automatic deployment that can be stacked on top of each other. 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.For more information about layered deployments, see Understand IoT Edge automatic deployments for single devices or at scale.

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.Layered deployments can be created and managed with the Azure CLI like any automatic deployment, with just a few differences. Po vytvoření vrstveného nasazení je stejná práce Azure CLI pro vrstvená nasazení stejná jako u libovolného nasazení.Once a layered deployment is created, same Azure CLI work for layered deployments the same as any deployment. Chcete-li vytvořit vrstvené nasazení, přidejte příznak --layered do příkazu CREATE.To create a layered deployment, add the --layered flag to the create command.

Druhý rozdíl je v konstrukci manifestu nasazení.The second difference is in the construction of the deployment manifest. Standardní automatické nasazení musí kromě libovolných uživatelských modulů obsahovat i moduly modulu runtime systému, navrstvená nasazení mohou obsahovat pouze uživatelské moduly.While standard automatic deployment must contain the system runtime modules in addition to any user modules, layered deployments can only contain user modules. Místo toho navrstvená nasazení potřebují na zařízení standardní automatické nasazení, aby bylo možné dodat požadované součásti každého zařízení IoT Edge, jako jsou moduly runtime systému.Instead, layered deployments need a standard automatic deployment be on a device as well, to supply the required components of every IoT Edge device, like the system runtime modules.

Tady je základní navrstvený manifest nasazení s jedním modulem jako příklad:Here's a basic layered deployment manifest with one module as an example:

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

Předchozí příklad ukázal nastavení vrstveného nasazení properties.desired pro modul.The previous example showed a layered deployment setting the properties.desired for a module. 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.If this layered deployment targeted a device where the same module was already applied, it would overwrite any existing desired properties. Chcete-li aktualizovat místo přepsání, požadované vlastnosti, můžete definovat nový pododdíl.In order to update, instead of overwrite, desired properties, you can define a new subsection. Příklad:For example:

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

Další informace o konfiguraci vláken modulů v vrstveném nasazení najdete v tématu vrstvené nasazení .For more information about configuring module twins in layered deployments, see Layered deployment

Identifikace zařízení pomocí značekIdentify devices using tags

Před vytvořením nasazení, budete muset mít k určení zařízení, která chcete ovlivnit.Before you can create a deployment, you have to be able to specify which devices you want to affect. Azure IoT Edge identifikuje zařízení pomocí značky ve dvojčeti zařízení.Azure IoT Edge identifies devices using tags in the device twin. 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í.Each device can have multiple tags that you define in any way that makes sense for your solution. Například pokud spravujete areálu Chytré budovy, můžete přidat následující značky k zařízení:For example, if you manage a campus of smart buildings, you might add the following tags to a device:

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

Další informace o značky a dvojčata zařízení, najdete v části principy a použití dvojčat zařízení ve službě IoT Hub.For more information about device twins and tags, see Understand and use device twins in IoT Hub.

Vytvoření nasazeníCreate a deployment

Můžete nasadit moduly pro cílová zařízení vytvořením nasazení, které se skládá z manifestu nasazení, stejně jako ostatní parametry.You deploy modules to your target devices by creating a deployment that consists of the deployment manifest as well as other parameters.

Pomocí příkazu AZ IoT Edge Deployment Create vytvořte nasazení:Use the az iot edge deployment create command to create a deployment:

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 deploymet použijte stejný příkaz s příznakem --layered.Use the same command with the --layered flag to create a layered deploymet.

Příkaz pro vytvoření nasazení má následující parametry:The deployment create command takes the following parameters:

  • --vrstvený – volitelný příznak k identifikaci nasazení v podobě vrstveného nasazení.--layered - An optional flag to identify the deployment as a layered deployment.
  • – id nasazení – název nasazení, které se vytvoří ve službě IoT hub.--deployment-id - The name of the deployment that will be created in the IoT hub. Zadejte jedinečný název, který je malá písmena až 128 vašeho nasazení.Give your deployment a unique name that is up to 128 lowercase letters. Vyhněte se mezery a následující neplatné znaky: & ^ [ ] { } \ | " < > /.Avoid spaces and the following invalid characters: & ^ [ ] { } \ | " < > /. Jedná se o požadovaný parametr.Required parameter.
  • --obsah -Filepath nasazení manifestu JSON.--content - Filepath to the deployment manifest JSON. Jedná se o požadovaný parametr.Required parameter.
  • – název centra – název služby IoT hub, ve kterém se vytvoří nasazení.--hub-name - Name of the IoT hub in which the deployment will be created. Centrum musí být v rámci aktuálního předplatného.The hub must be in the current subscription. Pomocí příkazu az account set -s [subscription name] změňte své aktuální předplatné.Change your current subscription with the az account set -s [subscription name] command.
  • --popisky -přidat popisky pro sledování vašich nasazení.--labels - Add labels to help track your deployments. Popisky jsou název, páry hodnota, která popisují vaše nasazení.Labels are Name, Value pairs that describe your deployment. Pro názvy a hodnoty mají popisky formát JSON.Labels take JSON formatting for the names and values. Například {"HostPlatform":"Linux", "Version:"3.0.1"}.For example, {"HostPlatform":"Linux", "Version:"3.0.1"}
  • --cílovou podmínku – zadejte cílovou podmínku k určení zařízení, která budou cílem s tímto nasazením.--target-condition - Enter a target condition to determine which devices will be targeted with this deployment. Podmínka je založena na nevyhovujících značkách zařízení nebo na dohlášených vlastnostech zařízení, které se musí shodovat s formátem výrazu. The condition is based on device twin tags or device twin reported properties and should match the expression format. Například tags.environment='test' and properties.reported.devicemodel='4000x'. For example, tags.environment='test' and properties.reported.devicemodel='4000x'. 
  • --priority -kladné celé číslo.--priority - A positive integer. V případě, že dvě nebo víc nasazení cílí na stejném zařízení, budou platit nasazení s nejvyšší číselnou hodnotou priority.In the event that two or more deployments are targeted at the same device, the deployment with the highest numerical value for Priority will apply.
  • --metriky – vytvoří metriky, které dotazují vlastnosti edgeHub hlášené na sledování stavu nasazení.--metrics - Create metrics that query the edgeHub reported properties to track the status of a deployment. Metriky přebírají vstup JSON nebo FilePath.Metrics take JSON input or a filepath. Například, '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.For example, '{"queries": {"mymetric": "SELECT deviceId FROM devices WHERE properties.reported.lastDesiredStatus.code = 200"}}'.

Monitorování nasazeníMonitor a deployment

Pomocí příkazu AZ IoT Edge Deployment show zobrazíte podrobnosti o jednom nasazení:Use the az iot edge deployment show command to display the details of a single deployment:

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

Příkaz pro zobrazení nasazení má následující parametry:The deployment show command takes the following parameters:

  • – id nasazení – název nasazení, který existuje ve službě IoT hub.--deployment-id - The name of the deployment that exists in the IoT hub. Jedná se o požadovaný parametr.Required parameter.
  • – název centra – název služby IoT hub, ve které existuje nasazení.--hub-name - Name of the IoT hub in which the deployment exists. Centrum musí být v rámci aktuálního předplatného.The hub must be in the current subscription. Přepnutí na požadované předplatné příkazem az account set -s [subscription name]Switch to the desired subscription with the command az account set -s [subscription name]

Zkontrolujte nasazení v příkazovém okně.Inspect the deployment in the command window. Vlastnost metriky uvádí počet pro každou metriku, která je vyhodnocována jednotlivými rozbočovači: The metrics property lists a count for each metric that is evaluated by each hub:

  • targetedCount – systém metriku, která určuje počet dvojčat zařízení ve službě IoT Hub, která splňují cílovou podmínku.targetedCount - A system metric that specifies the number of device twins in IoT Hub that match the targeting condition.
  • appliedCount -metrika systému určuje počet zařízení, která jste využili obsahu nasazení u jejich dvojčaty modulů ve službě IoT Hub.appliedCount - A system metric specifies the number of devices that have had the deployment content applied to their module twins in IoT Hub.
  • reportedSuccessfulCount – metrika zařízení, která určuje počet IoT Edge zařízení v rámci generování sestav nasazení v IoT Edge modulu runtime klienta.reportedSuccessfulCount - A device metric that specifies the number of IoT Edge devices in the deployment reporting success from the IoT Edge client runtime.
  • reportedFailedCount – metrika zařízení, která určuje počet IoT Edge zařízení v hlášení nasazení, které se nezdařily z modulu runtime klienta IoT Edge.reportedFailedCount - A device metric that specifies the number of IoT Edge devices in the deployment reporting failure from the IoT Edge client runtime.

Seznam ID zařízení nebo objektů pro každou z těchto metrik můžete zobrazit pomocí příkazu AZ IoT Edge Deployment show-metric :You can show a list of device IDs or objects for each of the metrics by using the az iot edge deployment show-metric command:

az iot edge deployment show-metric --deployment-id [deployment id] --metric-id [metric id] --hub-name [hub name] 

Příkaz pro zobrazení metriky nasazení má následující parametry:The deployment show-metric command takes the following parameters:

  • – id nasazení – název nasazení, který existuje ve službě IoT hub.--deployment-id - The name of the deployment that exists in the IoT hub.
  • --metrika-ID – název metriky, pro kterou chcete zobrazit seznam ID zařízení, například reportedFailedCount.--metric-id - The name of the metric for which you want to see the list of device IDs, for example reportedFailedCount.
  • – název centra – název služby IoT hub, ve které existuje nasazení.--hub-name - Name of the IoT hub in which the deployment exists. Centrum musí být v rámci aktuálního předplatného.The hub must be in the current subscription. Přepněte na požadované předplatné s příkazem az account set -s [subscription name].Switch to the desired subscription with the command az account set -s [subscription name].

Upravit nasazeníModify a deployment

Při úpravě nasazení změny se okamžitě replikují do všechna cílová zařízení.When you modify a deployment, the changes immediately replicate to all targeted devices.

Pokud aktualizujete cílovou podmínku, dojde k následující aktualizace:If you update the target condition, the following updates occur:

  • Pokud nesplnilo původní cílovou podmínku zařízení, ale splňuje novou cílovou podmínku a toto nasazení je nejvyšší prioritou pro dané zařízení, se použije toto nasazení do zařízení.If a device didn't meet the old target condition, but meets the new target condition and this deployment is the highest priority for that device, then this deployment is applied to the device.
  • Pokud zařízení aktuálně s tímto nasazením již splňuje cílovou podmínku, dojde k odinstalování tohoto nasazení a provede na další nejvyšší prioritu nasazení.If a device currently running this deployment no longer meets the target condition, it uninstalls this deployment and takes on the next highest priority deployment.
  • Pokud se zařízení aktuálně s tímto nasazením již splňuje cílovou podmínku a nesplňuje cílová podmínka všechna nasazení, pak nedošlo k žádné změně na zařízení.If a device currently running this deployment no longer meets the target condition and doesn't meet the target condition of any other deployments, then no change occurs on the device. Zařízení pokračuje její aktuální moduly v jejich aktuální stav, ale jako součást tohoto nasazení už nespravuje.The device continues running its current modules in their current state, but is not managed as part of this deployment anymore. Jakmile splňuje cílovou podmínku jakékoli jiné nasazení, dojde k odinstalování tohoto nasazení a provede na novou.Once it meets the target condition of any other deployment, it uninstalls this deployment and takes on the new one.

Nemůžete aktualizovat obsah nasazení, který zahrnuje moduly a trasy definované v manifestu nasazení.You cannot update the content of a deployment, which includes the modules and routes defined in the deployment manifest. Pokud chcete aktualizovat obsah nasazení, provedete to tak, že vytvoříte nové nasazení, které cílí na stejná zařízení s vyšší prioritou.If you want to update the content of a deployment, you do so by creating a new deployment that targets the same devices with a higher priority. Můžete upravit některé vlastnosti existujícího modulu, včetně cílové podmínky, popisků, metrik a priority.You can modify certain properties of an existing module, including the target condition, labels, metrics, and priority.

Pomocí příkazu AZ IoT Edge Deployment Update aktualizujte nasazení:Use the az iot edge deployment update command to update a deployment:

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

Příkaz pro aktualizaci nasazení má následující parametry:The deployment update command takes the following parameters:

  • – id nasazení – název nasazení, který existuje ve službě IoT hub.--deployment-id - The name of the deployment that exists in the IoT hub.
  • – název centra – název služby IoT hub, ve které existuje nasazení.--hub-name - Name of the IoT hub in which the deployment exists. Centrum musí být v rámci aktuálního předplatného.The hub must be in the current subscription. Přepnutí na požadované předplatné příkazem az account set -s [subscription name]Switch to the desired subscription with the command az account set -s [subscription name]
  • – Nastavte – umožňuje aktualizovat vlastnost v nasazení.--set - Update a property in the deployment. Můžete aktualizovat následujícími vlastnostmi:You can update the following properties:
    • targetCondition – například targetCondition=tags.location.state='Oregon'targetCondition - for example targetCondition=tags.location.state='Oregon'
    • popiskylabels
    • prioritapriority
  • --Přidat – přidá do nasazení novou vlastnost, včetně cílových podmínek nebo popisků.--add - Add a new property to the deployment, including target conditions or labels.
  • --Remove -odebere existující vlastnost, včetně cílových podmínek nebo popisků.--remove - Remove an existing property, including target conditions or labels.

Odstranit nasazeníDelete a deployment

Při odstranění nasazení nějaká zařízení provést další nejvyšší prioritu nasazení.When you delete a deployment, any devices take on their next highest priority deployment. Pokud vaše zařízení nesplňuje cílová podmínka jakékoli jiné nasazení, moduly se neodeberou při nasazení se odstraní.If your devices don't meet the target condition of any other deployment, then the modules are not removed when the deployment is deleted.

Pomocí příkazu AZ IoT Edge Deployment Delete odstraňte nasazení:Use the az iot edge deployment delete command to delete a deployment:

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

Příkaz pro odstranění nasazení má následující parametry:The deployment delete command takes the following parameters:

  • – id nasazení – název nasazení, který existuje ve službě IoT hub.--deployment-id - The name of the deployment that exists in the IoT hub.
  • – název centra – název služby IoT hub, ve které existuje nasazení.--hub-name - Name of the IoT hub in which the deployment exists. Centrum musí být v rámci aktuálního předplatného.The hub must be in the current subscription. Přepnutí na požadované předplatné příkazem az account set -s [subscription name]Switch to the desired subscription with the command az account set -s [subscription name]

Další krokyNext steps

Přečtěte si další informace o nasazení modulů do zařízení IoT Edge.Learn more about Deploying modules to IoT Edge devices.