Manifests in IoT Central
A manifest in the context of Azure IoT Edge is a JSON document that describes which modules (containers) to deploy to an IoT Edge device and how to configure these modules. It essentially forms the blueprint for an IoT Edge device. A module in IoT Edge is the smallest unit of computation managed by IoT Edge and can contain Azure services, third-party services, or your own solution-specific code.
When you create a deployment manifest, you're defining:
- Which modules to run on your IoT Edge device. These could include built-in system modules like IoT Edge Hub and IoT Edge Agent, as well as custom modules for specific tasks such as data processing, data filtering, data transformation, etc.
- The Docker images to use for each module.
- Configuration settings for each module, such as the desired properties of the module and the Docker create options for the module.
- How the modules interact with each other, including which routes to set up for messages between modules.
Why do we create a manifest?
The purpose of creating and deploying manifests in an IoT Edge device is to enable cloud deployment and management of edge computing devices. With a deployment manifest:
-
You can easily replicate a deployment across multiple IoT Edge devices. This can greatly simplify the process of scaling out your IoT solution across numerous edge devices.
-
You can centrally manage and monitor your IoT Edge devices from the cloud, providing an overview of the health of your IoT Edge devices and allowing for remote troubleshooting and updates.
-
You have the ability to manage your devices securely by enforcing desired properties on the modules and setting routes for data flow between modules, which can help prevent unauthorized access or changes.
-
You can update a module, add a new module, or remove a module from an IoT Edge device by simply updating the manifest and deploying it, reducing the need for physical access to the IoT Edge device.
Components of a Deployment Manifest
Each IoT Edge device runs at least two modules: $edgeAgent
and $edgeHub
, which are part of the IoT Edge runtime. A deployment manifest is a JSON document that describes the configuration of these modules and any additional modules you wish to add. This configuration includes the container image for each module, the credentials to access private container registries, and instructions for how each module should be created and managed.