Démarrage rapide : Configurer le service IoT Hub Device Provisioning avec un modèle ARM

Vous pouvez utiliser un modèle Azure Resource Manager (ARM) pour configurer par programmation les ressources du cloud Azure nécessaires au provisionnement de vos appareils. Ces étapes montrent comment créer un hub IoT et un service IoT Hub Device Provisioning avec un modèle ARM. Le hub IoT est également lié à la ressource DPS utilisant le modèle. Cette liaison permet à la ressource DPS d’affecter des appareils au hub en fonction des stratégies d’allocation que vous configurez.

Un modèle Azure Resource Manager est un fichier JSON (JavaScript Object Notation) qui définit l’infrastructure et la configuration de votre projet. Le modèle utilise la syntaxe déclarative. Vous décrivez le déploiement que vous avez prévu sans écrire la séquence de commandes de programmation pour créer le déploiement.

Dans ce guide de démarrage rapide, vous allez effectuer les étapes de programmation nécessaires pour créer un groupe de ressources et déployer le modèle à l’aide du portail Azure et d’Azure CLI. Toutefois, vous pouvez également utiliser PowerShell, .NET, Ruby ou d’autres langages de programmation pour effectuer ces étapes et déployer votre modèle.

Si votre environnement remplit les conditions préalables et que vous êtes habitué à utiliser les modèles ARM, le fait de sélectionner le bouton Déployer sur Azure a pour effet d’ouvrir le modèle pour un déploiement sur le portail Azure.

Button to deploy the Resource Manager template to Azure.

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit Azure avant de commencer.

Prérequis

Vérifier le modèle

Le modèle utilisé dans ce démarrage rapide est tiré des modèles de démarrage rapide Azure.

Notes

Actuellement, le modèle ARM n’est pas pris en charge pour la création d’inscriptions avec de nouvelles ressources DPS. Il s’agit d’une demande fréquente et comprise que nous envisageons d’implémenter dans le futur.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.12.40.16777",
      "templateHash": "13184692430416822033"
    }
  },
  "parameters": {
    "iotHubName": {
      "type": "string",
      "metadata": {
        "description": "Specify the name of the Iot hub."
      }
    },
    "provisioningServiceName": {
      "type": "string",
      "metadata": {
        "description": "Specify the name of the provisioning service."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specify the location of the resources."
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "S1",
      "metadata": {
        "description": "The SKU to use for the IoT Hub."
      }
    },
    "skuUnits": {
      "type": "int",
      "defaultValue": 1,
      "metadata": {
        "description": "The number of IoT Hub units."
      }
    }
  },
  "variables": {
    "iotHubKey": "iothubowner"
  },
  "resources": [
    {
      "type": "Microsoft.Devices/IotHubs",
      "apiVersion": "2021-07-02",
      "name": "[parameters('iotHubName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "capacity": "[parameters('skuUnits')]"
      },
      "properties": {}
    },
    {
      "type": "Microsoft.Devices/provisioningServices",
      "apiVersion": "2022-02-05",
      "name": "[parameters('provisioningServiceName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('skuName')]",
        "capacity": "[parameters('skuUnits')]"
      },
      "properties": {
        "iotHubs": [
          {
            "connectionString": "[format('HostName={0};SharedAccessKeyName={1};SharedAccessKey={2}', reference(resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName')), '2021-07-02').hostName, variables('iotHubKey'), listkeys(resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName')), '2021-07-02').value[0].primaryKey)]",
            "location": "[parameters('location')]"
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Devices/IotHubs', parameters('iotHubName'))]"
      ]
    }
  ]
}

Deux ressources Azure sont définies dans le modèle précédent :

Déployer le modèle

Déployer avec le portail

  1. Sélectionnez l’image suivante pour vous connecter à Azure et ouvrir le modèle pour le déploiement. Le modèle crée un hub IoT et une ressource DPS. Le nouveau hub IoT est lié à la ressource DPS.

    Button to deploy the Resource Manager template to Azure.

  2. Sélectionnez ou entrez les valeurs suivantes et sélectionnez Vérifier + Créer.

    ARM template deployment parameters on the portal

    Sauf indication contraire pour les champs suivants, utilisez la valeur par défaut pour créer le hub IoT et la ressource DPS.

    Champ Description
    Abonnement Sélectionnez votre abonnement Azure.
    Groupe de ressources Sélectionnez Créer, et entrez un nom unique pour le groupe de ressources, puis sélectionnez OK.
    Région Sélectionnez une région pour vos ressources. Par exemple, USA Est. Pour la résilience et la fiabilité, nous vous recommandons de déployer sur l’une des régions qui prennent en charge les Zones de disponibilité.
    Nom du hub IoT Entrez un nom pour le hub IoT qui doit être globalement unique dans l’espace de noms .azure-devices.net. Vous aurez besoin du nom du hub dans la section suivante au moment de valider le déploiement.
    Nom du service de provisionnement Entrez un nom pour la nouvelle ressource Device Provisioning Service (DPS). Le nom doit être globalement unique au sein de l’espace de noms .azure-devices-provisioning.net. Vous aurez besoin du nom DPS dans la section suivante au moment de valider le déploiement.
  3. Dans l’écran suivant, lisez les conditions générales. Si vous acceptez toutes les conditions, sélectionnez Créer.

    Le déploiement prend quelques instants.

    Outre le portail Azure, vous pouvez également utiliser Azure PowerShell, l’interface Azure CLI et l’API REST. Pour découvrir d’autres méthodes de déploiement, consultez Déployer des modèles.

Déployer avec Azure CLI

L’utilisation d’Azure CLI nécessite la version 2.6 ou ultérieure. Si vous exécutez Azure CLI localement, vérifiez votre version en exécutant : az --version

Vous connecter à votre compte Azure et sélectionner votre abonnement.

  1. Si vous exécutez Azure CLI localement au lieu de l’exécuter sur le portail, vous devez vous connecter. Pour vous connecter à l’invite de commande, exécutez la commande login :

    az login
    

    Suivez les instructions pour vous authentifier à l’aide du code et vous connecter à votre compte Azure via un navigateur web.

  2. Si vous possédez plusieurs abonnements Azure, la connexion à Azure vous donne accès à tous les abonnements Azure associés à vos informations d’identification. Utilisez la commande pour répertorier les comptes Azure ci-dessous :

    az account list -o table
    

    Utilisez la commande suivante pour sélectionner l’abonnement que vous souhaitez utiliser pour exécuter les commandes en vue de créer votre hub IoT et vos ressources DPS. Vous pouvez utiliser le nom de l’abonnement ou l’ID de la sortie de la commande précédente :

    az account set --subscription {your subscription name or id}
    
  3. Copiez et collez les commandes suivantes dans votre invite CLI. Exécutez ensuite les commandes en sélectionnant la touche Entrée.

    Conseil

    Les commandes vous invitent à renseigner un emplacement de groupe de ressources. Vous pouvez afficher la liste des emplacements disponibles en exécutant d’abord la commande :

    az account list-locations -o table

    read -p "Enter a project name that is used for generating resource names:" projectName &&
    read -p "Enter the location (i.e. centralus):" location &&
    templateUri="https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.devices/iothub-device-provisioning/azuredeploy.json" &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location "$location" &&
    az deployment group create --resource-group $resourceGroupName --template-uri  $templateUri &&
    echo "Press [ENTER] to continue ..." &&
    read
    
  4. Les commandes vous invitent à renseigner les informations suivantes. Indiquez chaque valeur et sélectionnez la touche Entrée.

    Paramètre Description
    Nom du projet La valeur de ce paramètre sert à créer un groupe de ressources qui contiendra toutes les ressources. La chaîne rg est ajoutée à la fin de la valeur de nom de votre groupe de ressources.
    location Cette valeur correspond à la région où sont créées toutes les ressources.
    iotHubName Entrez un nom pour le hub IoT qui doit être globalement unique dans l’espace de noms .azure-devices.net. Vous aurez besoin du nom du hub dans la section suivante au moment de valider le déploiement.
    provisioningServiceName Entrez un nom pour la nouvelle ressource Device Provisioning Service (DPS). Le nom doit être globalement unique au sein de l’espace de noms .azure-devices-provisioning.net. Vous aurez besoin du nom DPS dans la section suivante au moment de valider le déploiement.

    Azure CLI sert à déployer le modèle. Outre Azure CLI, vous pouvez aussi utiliser Azure PowerShell, le portail Azure et l’API REST. Pour découvrir d’autres méthodes de déploiement, consultez Déployer des modèles.

Vérifier les ressources déployées

  1. Pour vérifier le déploiement, exécutez la commande suivante pour lister les ressources et recherchez le nouveau service de provisionnement et le hub IoT dans la sortie :

     az resource list -g "${projectName}rg"
    
  2. Pour vérifier que le hub est déjà lié à la ressource DPS, exécutez la commande show suivante de l’extension DPS.

     az iot dps show --name <Your provisioningServiceName>
    

    Remarquez les hubs qui sont liés sur le membre iotHubs.

Nettoyer les ressources

Les autres démarrages rapides de cette collection reposent sur ce démarrage rapide. Si vous souhaitez continuer à utiliser d’autres démarrages rapides ou les didacticiels, ne nettoyez pas les ressources créées lors de ce démarrage rapide. Si vous n’envisagez pas de continuer, vous pouvez utiliser le portail Azure ou Azure CLI pour supprimer le groupe de ressources et toutes ses ressources.

Pour supprimer un groupe de ressources et toutes ses ressources à partir du portail Azure, ouvrez simplement le groupe de ressources, puis sélectionnez Supprimer le groupe de ressources dans la partie supérieure.

Pour supprimer le groupe de ressources déployé à l’aide d’Azure CLI :

az group delete --name "${projectName}rg"

Vous pouvez également supprimer des groupes de ressources et des ressources individuelles à l’aide de l’une des options suivantes :

  • Portail Azure
  • PowerShell
  • API REST
  • Kits de développement logiciel (SDK) des plateformes prises en charge publiés pour Azure Resource Manager ou IoT Hub Device Provisioning Service

Étapes suivantes

Dans ce guide de démarrage rapide, vous avez déployé un hub IoT et une instance du service Device Provisioning, puis vous avez lié ces deux ressources. Pour savoir comment utiliser cette configuration pour provisionner un appareil, passez au démarrage rapide traitant de la création d’un appareil.