Skip to content

Commit adb938e

Browse files
authored
Merge pull request #109925 from anbene/iot-migration-2
Adding two articles for IoT Edge Module in Partner Center
2 parents ea99375 + 97dcdf6 commit adb938e

13 files changed

+615
-0
lines changed

articles/marketplace/TOC.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,12 @@
476476
href: ./partner-center-portal/create-new-operations-offer.md
477477
- name: Create a Dynamics 365 Business Central offer
478478
href: ./partner-center-portal/create-new-business-central-offer.md
479+
- name: IoT Edge module offers
480+
items:
481+
- name: Prepare IoT Edge module technical assets
482+
href: ./partner-center-portal/create-iot-edge-module-asset.md
483+
- name: Create an IoT Edge module offer
484+
href: ./partner-center-portal/azure-iot-edge-module-creation.md
479485
- name: Managed Service offers
480486
items:
481487
- name: Create a Managed Service offer

articles/marketplace/partner-center-portal/azure-iot-edge-module-creation.md

Lines changed: 465 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
---
2+
title: Prepare your IoT Edge module technical assets - Azure Marketplace
3+
description: Learn about the technical and configuration requirements your Internet of Things (IoT) Edge module technical assets must meet before you can publish them to Azure Marketplace.
4+
author: anbene
5+
ms.author: mingshen
6+
ms.service: marketplace
7+
ms.subservice: partnercenter-marketplace-publisher
8+
ms.topic: conceptual
9+
ms.date: 04/03/2020
10+
---
11+
12+
# Prepare your IoT Edge module technical assets
13+
14+
> [!IMPORTANT]
15+
> We're moving the management of your IoT Edge module offers from Cloud Partner Portal to Partner Center. Until your offers are migrated, please follow the instructions in [Prepare your IoT Edge module technical assets](https://docs.microsoft.com/azure/marketplace/cloud-partner-portal/iot-edge-module/cpp-create-technical-assets) for Cloud Partner Portal to manage your offers.
16+
17+
This article describes the requirements that your Internet of Things (IoT) Edge module technical assets must meet before being published in Azure Marketplace.
18+
19+
## Get started
20+
21+
An IoT Edge module is a Docker-compatible container that runs on an IoT Edge device.
22+
23+
- To learn more about IoT Edge modules, see [Understand Azure IoT Edge modules](https://aka.ms/UnderstandAzureIoTEdgemodules).
24+
- To get started with your IoT Edge module development, see [Develop your own IoT Edge modules](https://aka.ms/DevelopyourownIoTEdgemodules).
25+
26+
## Technical requirements
27+
28+
Your IoT Edge module must meet the following technical requirements to be certified and published in Azure Marketplace.
29+
30+
### Platform support
31+
32+
Your IoT Edge module must support one of the following platform options:
33+
34+
#### Tier 1 platforms supported by IoT Edge
35+
36+
Your module must support all Tier 1 platforms supported by IoT Edge (as recorded in [Azure IoT Edge support](https://aka.ms/AzureIoTEdgesupport)). We recommend this option because it provides a better customer experience. Modules that meet this criteria will be showcased. A module using this platform option must:
37+
38+
- Provide a latest tag and a version tag (for example, 1.0.1) that are manifest tags built with the [GitHub Manifest-tool](https://aka.ms/GitHubmanifest-tool).
39+
40+
- Use the offer listing tab in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace) to add a link under the **Useful links** section to the [Azure IoT Edge Certified device catalog](https://catalog.azureiotsolutions.com/). You can use the redirection link https://aka.ms/iot-edge-certified that resolves to the [Azure IoT Edge Device Catalog](https://catalog.azureiotsolutions.com/).
41+
42+
#### A subset of Tier 1 platforms supported by IoT Edge
43+
44+
Your module must support a subset (at least one) of Tier 1 platforms supported by IoT Edge (as recorded in [Azure IoT Edge support](https://aka.ms/AzureIoTEdgesupport)). A module using this platform option must:
45+
46+
- Provide a latest tag and a version tag (for example, 1.0.1) that are manifest tags built with the GitHub [manifest-tool](https://github.com/estesp/manifest-tool) if more than one platform is supported. Manifest tags are optional only when one platform is supported.
47+
- Use the offer listing tab in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace) to add a link under the **Useful links** section to at least one IoT Edge device from the [Azure IoT Edge Certified device catalog](https://catalog.azureiotsolutions.com/).
48+
49+
:::image type="content" source="media/iot-edge-module-technical-assets-offer-listing.png" alt-text="This is an image of the Offer Listing section within Partner Center":::
50+
51+
### Device dimensions
52+
53+
IoT Edge module dimensions (such as CPU, RAM, storage, and GPU) on targeted IoT Edge devices must meet the following requirements:
54+
55+
- The module must work with at least one IoT Edge device from the [Azure IoT Edge Certified device catalog](https://catalog.azureiotsolutions.com/).
56+
57+
- The minimum hardware requirements must be documented as the last paragraph in the description of the offer (under the offer listing tab in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace)). Optionally, you can also list the recommended hardware requirements if they differ significantly. For example, add the following section at the end of your offer description:
58+
59+
Copy this HTML text or use the corresponding rich text functions in the editing window.
60+
61+
```html
62+
<p><u>Minimum hardware requirements:</u> Linux x64 and arm32 OS, 1GB of RAM, 500 Mb of storage</p>
63+
```
64+
65+
### Configuration
66+
67+
Your module must include default configuration settings to make the deployment to an IoT Edge device as straightforward as possible. This information can be provided in the **Technical configuration** page for the plan in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace). The container may also include the IoT Edge Module SDK to enable communication with the edge Hub and IoT Hub.
68+
69+
#### Default configuration
70+
71+
IoT Edge modules must be able to start with the default settings provided in the **Technical configuration** page for the plan in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace). The following default settings are available:
72+
73+
- Default **routes**
74+
- Default **module twin desired properties**
75+
- Default **environment variables**
76+
- Default **container create options**
77+
78+
In a scenario where a parameter that's required for a default value doesn't make sense (for example, the IP address of a customer's server), add a parameter as the default value. This value is upper case and enclosed in brackets. For this example, you'd set up the following default environment variable:
79+
80+
```
81+
ServerIPAddress = <MY_SERVER_IP_ADDRESS>
82+
```
83+
84+
#### Configuration documentation
85+
86+
All configuration settings of an IoT Edge module must be clearly documented. For example, you must document how to use its routes, twin desired properties, environment variables, createOptions, and so on. You must either provide a link to your documentation or make it part of your offer or plan description. You can provide this information in the **Offer listing** and **Plan listing** page in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace).
87+
88+
#### Tags and versioning
89+
90+
Customers must be able to easily deploy a module and automatically get updates from the marketplace (in a developer scenario). They also must be able to use and freeze an exact version they've tested (in a production scenario).
91+
92+
To meet these customer expectations and be published in the marketplace, IoT Edge modules must meet the following requirements
93+
94+
- Include a manifest latest tag that points to the latest version on all supported platforms.
95+
- Make version tags in the form X.Y.Z, where X, Y, and Z are integers.
96+
- Include a "version" tag, such as 1.0.1, that points to a specific version on all supported platforms.
97+
- Don't update "version" tags, such as 1.0.1, because they must not be changed.
98+
99+
> [!NOTE]
100+
> Optionally, versioning can include "rolling version" tags, such as 2.0 and 1.0. This supports maintaining multiple major versions in parallel.
101+
102+
### Telemetry
103+
104+
Modules using the IoT Module SDK must set the unique module identifier to PublisherId.OfferId.SkuId for telemetry purposes. A unique identifier helps Azure Marketplace identify the number of module instances that are running.
105+
106+
Use one of the following methods from the IoT Module SDKs to set the ProductInfo to this identifier:
107+
108+
- [C#](https://docs.microsoft.com/dotnet/api/microsoft.azure.devices.client.deviceclient.productinfo?view=azure-dotnet#Microsoft_Azure_Devices_Client_DeviceClient_ProductInfo)
109+
- [C](https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/Iothub_sdk_options.md)
110+
- [Python](https://github.com/Azure/azure-iot-sdk-c/blob/master/doc/Iothub_sdk_options.md)
111+
- [Java](https://docs.microsoft.com/java/api/com.microsoft.azure.sdk.iot.device.productinfo?view=azure-java-stable)
112+
113+
For modules that don't use the IoT Module SDK, less precise insights are available through Partner Center, such as the number of downloads.
114+
115+
### Security
116+
117+
IoT Edge modules must avoid [privileged modules](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities). Instead ask for the least privileged access to the host as possible.
118+
119+
### Module IoT SDK
120+
121+
Including the IoT Module SDK isn't a prerequisite for certification. However, including the IoT Module SDK may provide a better user experience. For example, to support routing or sending messages to the Cloud.
122+
123+
The IoT Module SDK is required to get telemetry data about the number of module instances that are running.
124+
125+
## Recertification process
126+
127+
Partners are notified whenever there's a breaking change that affects their modules, such as:
128+
129+
- Tier 1 OS/arch support matrix supported by IoT Edge
130+
- IoT Module SDK
131+
- IoT Edge runtime
132+
- IoT Edge module certification guidelines
133+
134+
Partners must update and recertify their offers by re-publishing them in [Partner Center](https://partner.microsoft.com/dashboard/commercial-marketplace).
135+
136+
Your offer will also be recertified if you update it, such as adding new image tags.
137+
138+
## Host module in Azure Container Registry
139+
140+
To upload your IoT Edge module to Azure Marketplace, you first need to host it in an [Azure Container Registry](https://azure.microsoft.com/services/container-registry/) (ACR). The module must include all the tags that you want to publish, including the image tags that are referenced by a manifest tag. For more information, see the tutorial [Create an Azure container registry and push a container image](https://docs.microsoft.com/azure/container-instances/container-instances-tutorial-prepare-acr).
141+
142+
## Next steps
143+
144+
- [Create your IoT Edge module offer](https://aka.ms/AzureCreateIoT)
22.1 KB
Loading
Loading
Loading
Loading
Loading
Loading
89.6 KB
Loading

0 commit comments

Comments
 (0)