A Project in ZEDEDA Cloud is the organization/grouping of various assets under an Enterprise. You can create different projects based on your business segmentation, functional or geographical segmentation, or any of your business logic.
Azure projects are specially built with Azure-specific features that facilitate the integration of ZEDEDA edge nodes into the Azure IoT Hub. After doing this, it becomes easy to manage your edge devices added to Azure IoT Hub.
Customers have to perform several steps to deploy the Azure module on the Edge Node. To simplify this effort (one click), ZEDEDA has integrated Azure with ZEDEDA Cloud.
A quick highlight of what is explained in this document is represented below as a workflow.
After you log in to the ZEDEDA GUI:
- Step 1 > Click on the Administration () icon.
- Step 2 > Click on 'Projects'.
- Step 3 > Click on the expand () icon to view the summary panel.
Summary Panel shows the total number of projects based on the 'Project Status' donut view. You can hover around this donut to get the status of each Project present in your Enterprise.
- Step 1 > Click on one of the projects in the list view to show the detailed view of the same.\
- Step 2 > A temporary tab is created, navigating you to the detailed view of the selected Project.
Some policies govern the behavior of an Azure project.
Azure Cloud Policy
These are the common attributes of your Azure subscription, which can be used across the Edge Nodes and Edge Application deployments. For example, Cloud Policy–Includes client details, service details, and custom variables.
Azure Module Policy
A module policy manifest is a JSON document that describes the modules to be configured on the targeted Edge Nodes. It contains the configuration metadata for all the modules, including the required system modules. This helps to configure modules for a large number of Edge Nodes manage and configure applications on a large number of Edge Nodes. Once you create a module, you want to deploy it to your Edge Node(s). If you have multiple modules that work together to collect and process data, you can deploy them all simultaneously and declare the routing rules that connect them. Once you add the new Edge Node in this Project, the modules defined in the policy will automatically be deployed on it.
Starting with ZEDEDA Cloud Release 5.18.0, multiple Azure module policies are supported in the ZEDEDA GUI along with newly introduced editable module tag, priority, and twin details. As long as tags are separate or priorities are set correctly, the matching number of deployments will happen through an Azure-managed deployment manifest.
Multiple Azure module policies mean you can now run the same modules on more than one edge node with different twin settings. The module policy with higher priority will get applied.
Operations Using the ZEDEDA GUI
Create an Azure Project
The create operation can be performed in the Projects list view only. After you log in to the ZEDEDA GUI, create a Project using the following steps:
- Step 1 > Click on the Add () icon
- Step 2 > Under 'Profile', select 'Azure' from the dropdown. Populate the input field values for the 'Details' section, as instructed in the table.
- Step 3 > Under 'Enrollment Type', you can either select 'Symmetric Key' or 'TPM'. Skip step 4 if you have selected 'TPM' as the enrollment type.
Define the basic identification details of the Project.
|Name(*)||This is unique across the Enterprise and cannot be changed.|
|Title(*)||This is user-defined and can be changed.|
|Description||A detailed explanation of what the Project is used for. Not mandatory.|
You will need to select 'Cloud Profile' using the dropdown menu.
Azure Client Details–Common for almost all Azure services. You are registering your application to be able to be recognized by Azure from the Active Directory (AD) tenant that is taking care of your subscription. For more details, click here.
|App id(*)||The Application ID is assigned to your app when registering it with Azure AD. You can find this in the Azure Portal.|
|App Password(*)||The application password to sign in.|
|Tenant id(*)||An ID is used to control who can sign into the application.|
- Step 4 > Select 'Symmetric Key' and fill in the other 'Azure Service Details' as instructed in the table. Skip step 5 if you have selected 'Symmetric Key.'
Azure Service Details–The IoT Hub Device Provisioning Service (DPS) is a helper service for IoT Hub that enables zero-touch, just-in-time provisioning to the right IoT hub without requiring human intervention. For more details, click here.
Select either of the following:
|Subscription id(*)||You will get this while creating the Azure account.|
|Resource Group Name(*)||Select the resource group name depending upon which DPS and IoT hub you are chosen.|
|DPS Service Name(*)||Select a Device Provisioning Service name. This is used for registering the runtime with Azure.|
|DPS Group Name(*)||Select a Device Provisioning Service group name. There are multiple types of enrollments. A Symmetric key group name is used.|
|IoT Hub Name(*)||Enter a name for your hub. This name must be globally unique.|
- Step 5 > Select 'TPM' and fill in the other 'Azure Service Details' as instructed in the above table.
Note: To deploy the Azure IoT application using TPM as 'Enrollment Type', follow the steps mentioned here.
Starting with ZEDEDA Cloud Release 5.20.0, you can upload a root or intermediate certificate at the project level. ZEDEDA Cloud will then generate the device CA certificate and pack it through the cloud-init mechanism so that the Azure IoT Edge runtime can start using it.
- Step 6 > Click 'Yes' to attach the certificate.
- Step 7 > Provide the required private key.
- Step 8 > Click 'Yes' to enforce the edge node attestation.
- Step 9 > Click 'Yes' to provide the network instance details. For more information on network instances, click here.
- Step 10 > Click 'Yes' to provide the 'Edge App Policy' details. You have to select the 'Edge App' and 'Edge App Instance Naming Scheme' for the other sections (such as 'Drives,' 'Resources,' and 'Network Adapters') to appear.
The status of projects depends upon the status of the attached policies.
|Edge App(*)||Select appropriate edge applications for this Project.|
|Edge App Instance Naming Scheme(*)||Select the appropriate edge application naming scheme.|
|Project Identifier||The user has an option to specify the identifier if required. Else the project name will be taken by default.|
|Edge App Identifier||The user has an option to specify the identifier if required. Else the edge application name will be taken by default.|
Define dependencies on all the App Images that the Edge App needs to function. This includes choosing an App Image already uploaded or linked through ZEDEDA Cloud. The table below explains the fields in a bit more detail.
Define the hardware resource requirements of the Edge App, such as the CPU and Memory required to function correctly.
Define the network adapters and the assignment method and tags, if any.
- Step 11 > Click on the 'Add Modules Policy' section to configure any modules.
- Step 12 > Click on the 'Add' button.
|Module Policy Name(*)||Name of the module policy. The same policy name and the version (for example, policyname_policyversion) will be used while creating IoT edge deployments on Azure.|
|Deployment Priority||If two or more policies are targeted for the same set of devices, then the module policy with the highest priority will be applied.|
|Deploy of Matching Tags||Tags provided in this field are matched with the device tags. If there is a match, the module policy gets applied to the set of devices.|
The colored dot indicates the status to the left of the Project name. The colored dots with the status is as represented in the table:
|Active||The Project is ready to use.|
|Inactive||The Project is not ready to use.|
|Archived||Status not used currently.|
|Unknown||The project status is not known.|
|Initialized||The project status shows this status until the policy is created.|
|Error||Status not used currently.|
The Project is created successfully!
Read View of Azure Project
The read operation can be performed in the Project detail view only. After you log in to the ZEDEDA GUI, click on the Administration () icon and select 'Projects' to go to the list of already available projects. Click on any of the projects in the list view to show the detailed view of the same.
The read view shows the 'Info' and 'Events' sections.
Refer to the tables under the create operation for information on the field values and their descriptions.
Refer to the tables under the create operation for information on the field values and their descriptions.
Lists all the events that occurred, sorted with date and time, in a table. You can see details based on the type of severity, the source from where a particular event is generated, the Edge Node, and related Edge Application Instances on which the event has occurred, along with descriptions, in different tabs.
The event summary can be viewed by clicking on the expand () icon. You can see details of the change in state, the severity type, debug info, etc.
Update an Azure Project
The update/edit operation can only be performed in the Project detail view. After you log in to the ZEDEDA GUI, click on the Administration () icon and select 'Projects' to go to the list of already available projects. Click on any of the projects in the list view to show the detailed view of the same.
The update/edit view shows only the 'Info' section.
Update/edit a Project using the following steps:
- Step 1 > Click on the Edit () icon.
The 'Info' section allows you to update/edit most fields. Refer to the tables under the create operation for information on the editable field values and their descriptions.
- Step 2 > Update the editable fields of the 'Details' section. Refer to the tables under the create operation for information on the editable field values and their descriptions.
- Step 3 > Update the certificate section by removing the already present certificate with the recent certificate, if required.
- Step 4 > Update the editable fields of the policies section, if required.
- Step 5 > Update the 'Modules Policy' section, if required.
- Step 6 > Click on 'Submit' button.
The Project is updated successfully!
Delete an Azure Project
The delete operation can be performed in the Project list view and detail view. After you log in to the ZEDEDA GUI, if you no longer require the Project, you could delete it using the following steps:
- Step 1 > Click on the checkboxes of the Projects list on which the required operation needs to be performed.
- Step 2 > Click on the More () icon on the top right corner.
- Step 3 > From the dropdown, select 'Delete'.
- Step 4 > Click the 'Confirm' button on the modal dialogue
Note: There is no way to reclaim the data, after the delete operation is performed.
The selected Project is deleted successfully!
Operations Using zCLI
You can create a Project using the following command:
zcli> zcli project create <name> [--title=<title>] [--description=<description>] [--policy-config=<policy-config>] [--policy-type=<policy-type>]
You can use the following command to see the created Project details:
zcli> zcli project show [[[<name> | --uuid=<uuid>] [--detail]] | [--name-pattern=<name-pattern>]]
For example, the show command for a Project displays the following output:
zcli> zcli project show
Project Title Description State
------------ ---------------- ------------------ ---------------
test-project2 test-project2 test-project2 TAG_STATE_ACTIVE
Project_100 Project_100 Default Project TAG_STATE_ACTIVE
test-project1 test-project1 test-project1 TAG_STATE_ACTIVE
default-project default-project Default Project TAG_STATE_ACTIVE
test-project test-project test-project TAG_STATE_ACTIVE
Total 5 Active 5
You can update a Project using the following command:
zcli> zcli project update <name> [--title=<title>] [--description=<description>] [--config=<key:value>...] [--policy-config=<policy-config>] [--policy-type=<policy-type>]
You can delete a Project using the following command:
zcli> zcli project delete <name> [-f]
Note: -f is to forcefully make the delete request to ZEDEDA Cloud, without prompting the user.