Quickstart: IoT Hub Device Provisioning Service (DPS) instellen met een ARM-sjabloon

U kunt een Azure Resource Manager-sjabloon (ARM-sjabloon) gebruiken voor het programmatisch instellen van de benodigde Azure-cloudresources voor het inrichten van uw apparaten. In deze stappen ziet u hoe u een IoT-hub en een nieuwe IoT Hub Device Provisioning Service maakt met een ARM-sjabloon. De IoT-hub is ook gekoppeld aan de DPS-resource met behulp van de sjabloon. Met deze koppeling kan de DPS-resource apparaten toewijzen aan de hub op basis van het toewijzingsbeleid dat u configureert.

Een Resource Manager-sjabloon is een JSON-bestand (JavaScript Object Notation) dat de infrastructuur en configuratie voor uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. In declaratieve syntaxis beschrijft u de beoogde implementatie zonder dat u de reeks programmeeropdrachten voor het maken van de implementatie hoeft te schrijven.

Deze quickstart maakt gebruik van Azure Portal en de Azure CLI voor het uitvoeren van de benodigde programmatische stappen voor het maken van een resourcegroep en het implementeren van de sjabloon, maar u kunt ook gewoon PowerShell, .NET, Ruby of andere programmeertalen gebruiken om deze stappen uit te voeren en de sjabloon te implementeren.

Als uw omgeving voldoet aan de vereisten en u al bekend bent met het gebruik van ARM-sjablonen, selecteert u de onderstaande knop Implementeren naar Azure om de sjabloon voor implementatie in de Azure Portal te openen.

Een overzicht van het implementeren naar Azure

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

De sjabloon controleren

De sjabloon die in deze quickstart wordt gebruikt, komt uit Azure-quickstart-sjablonen.

Notitie

Er is momenteel geen ARM-sjabloonondersteuning voor het maken van inschrijvingen met nieuwe DPS-resources. Dit is een veelvoorkomende en begrepen aanvraag die in overweging wordt genomen voor implementatie.

{
  "$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'))]"
      ]
    }
  ]
}

Er worden twee Azure-resources gedefinieerd in de sjabloon hierboven:

De sjabloon implementeren

Implementeren met de Portal

  1. Selecteer de volgende afbeelding om u aan te melden bij Azure en de sjabloon te openen voor implementatie. Met de sjabloon maakt u een nieuwe IoT-hub- en DPS-resource. De hub wordt gekoppeld aan de DPS-resource.

    Stappen voor het implementeren naar Azure in Portal

  2. Selecteer of voer de volgende waarden in en selecteer Beoordelen en maken.

    Implementatieparameters van ARM-sjablonen op de portal

    Gebruik de standaardwaarde voor het maken van de IoT-hub en de DPS-resource, tenzij deze hieronder wordt opgegeven.

    Veld Beschrijving
    Abonnement Selecteer uw Azure-abonnement.
    Resourcegroep Selecteer Nieuwe maken, voer een unieke naam in voor de resourcegroep en selecteer vervolgens OK.
    Regio Selecteer een regio voor uw resources. Bijvoorbeeld VS - Oost. Voor tolerantie en betrouwbaarheid raden we u aan te implementeren in een van de regio's die ondersteuning bieden voor Beschikbaarheidszones.
    Naam van de IoT-hub Voer een naam in voor de IoT Hub die wereldwijd uniek moet zijn binnen de naamruimte .azure-devices.net. U hebt de hubnaam in de volgende sectie nodig wanneer u de implementatie valideert.
    Naam van inrichtingsservice Voer een naam in voor de nieuwe Device Provisioning Service (DPS)-resource. De naam moet wereldwijd uniek zijn binnen de naamruimte .azure-devices-provisioning.net. U hebt de DPS-naam in de volgende sectie nodig wanneer u de implementatie valideert.
  3. Lees de voorwaarden op het volgende scherm. Als u akkoord gaat met alle voorwaarden, selecteert u Maken.

    Het kan even duren voordat de implementatie is voltooid.

    Naast Azure Portal kunt u ook de Azure PowerShell, Azure CLI en REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

Implementeren met Azure CLI

Voor het gebruik van Azure CLI is versie 2.6 of hoger vereist. Als u de Azure CLI lokaal uitvoert, controleert u uw versie door het volgende uit te voeren: az --version

Meld u aan bij uw Azure-account en selecteer uw abonnement.

  1. Als u de Azure CLI lokaal uitvoert in plaats van deze uit te voeren in de portal, moet u zich aanmelden. Als u zich wilt aanmelden bij de opdrachtprompt, voert u de aanmeldingsopdracht uit:

    az login
    

    Volg de instructies om te verifiëren met de code en meld u aan bij uw Azure-account via een webbrowser.

  2. Als u meerdere Azure-abonnementen hebt en u zich aanmeldt bij Azure, hebt u toegang tot alle Azure accounts die zijn gekoppeld aan uw referenties. Gebruik de volgende opdracht om de Azure-accounts weer te geven die u kunt gebruiken:

    az account list -o table
    

    Gebruik de volgende opdracht om het abonnement te selecteren dat u wilt gebruiken voor het uitvoeren van de opdrachten voor het maken van uw IoT-hub en DPS-resources. U kunt de naam van het abonnement of de id van de uitvoer van de vorige opdracht gebruiken:

    az account set --subscription {your subscription name or id}
    
  3. Kopieer en plak de volgende opdrachten in uw CLI-prompt. Voer vervolgens de opdrachten uit door op ENTER te drukken.

    Tip

    De opdrachten vragen om een resourcegroeplocatie. U kunt een lijst met beschikbare locaties weergeven door eerst de volgende opdracht uit te voeren:

    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. De opdrachten vragen u om de volgende informatie. Geef elke waarde op en druk op ENTER.

    Parameter Beschrijving
    Projectnaam De waarde van deze parameter wordt gebruikt om een resourcegroep te maken om alle resources te bevatten. De tekenreeks rg wordt toegevoegd aan het einde van de waarde voor de naam van de resourcegroep.
    location Deze waarde is de regio waar alle resources zich bevinden.
    iotHubName Voer een naam in voor de IoT Hub die wereldwijd uniek moet zijn binnen de naamruimte .azure-devices.net. U hebt de hubnaam in de volgende sectie nodig wanneer u de implementatie valideert.
    provisioningServiceName Voer een naam in voor de nieuwe Device Provisioning Service (DPS)-resource. De naam moet wereldwijd uniek zijn binnen de naamruimte .azure-devices-provisioning.net. U hebt de DPS-naam in de volgende sectie nodig wanneer u de implementatie valideert.

    Voor het implementeren van de sjabloon wordt de AzureCLI gebruikt. Naast de Azure CLI kunt u ook de Azure PowerShell, Azure Portal en REST API gebruiken. Zie Sjablonen implementeren voor meer informatie over andere implementatiemethoden.

Geïmplementeerde resources bekijken

  1. Voer de volgende opdracht voor het weergeven van resources uit en zoek de nieuwe inrichtingsservice en IoT-hub in de uitvoer om de implementatie te controleren:

     az resource list -g "${projectName}rg"
    
  2. Als u wilt controleren of de hub al is gekoppeld aan de DPS-resource, voert u de volgende opdracht uit DPS-extensie weergeven.

     az iot dps show --name <Your provisioningServiceName>
    

    Let op de hubs die zijn gekoppeld aan het iotHubs-lid.

Resources opschonen

Andere Quick Starts in deze verzameling zijn op deze Quick Start gebaseerd. Als u van plan bent om door te gaan met de volgende quickstarts of met de zelfstudies, moet u de resources die in deze quickstart zijn gemaakt, niet opschonen. Als u niet van plan bent om door te gaan, kunt u de Azure Portal of Azure CLI gebruiken om de resourcegroep en alle bijbehorende resources te verwijderen.

Als u een resourcegroep en alle bijbehorende resources uit de Azure Portal wilt verwijderen, opent u de resourcegroep en selecteert u Resourcegroep verwijderen en bovenaan.

De resourcegroep die is geïmplementeerd met behulp van Azure CLI verwijderen:

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

U kunt ook resourcegroepen en afzonderlijke resources verwijderen met behulp van Azure Portal, PowerShell of REST API's evenals ondersteunde platform-SDK's die zijn gepubliceerd voor Azure Resource Manager of de IoT Hub Device Provisioning Service.

Volgende stappen

In deze quickstart hebt u een IoT-hub en een Device Provisioning Service-exemplaar geïmplementeerd en de twee resources gekoppeld. Als u wilt weten hoe u deze instellingen gebruikt voor het inrichten van een apparaat, gaat u verder met de rest van de quickstart voor het maken van een apparaat.