Início Rápido: Configurar o DPS (Serviço de Provisionamento de Dispositivos) no Hub IoT com o modelo do ARM

É possível usar o modelo do ARM (Azure Resource Manager) para configurar programaticamente os recursos de nuvem do Azure necessários para o provisionamento dos dispositivos. Essas etapas mostram como criar um hub IoT e um Serviço de Provisionamento de Dispositivos no Hub IoT com um modelo do ARM. O hub IoT também é vinculado ao recurso de DPS usando o modelo. Essa vinculação permite que o recurso de DPS atribua dispositivos ao hub com base nas políticas de alocação que você configura.

Um modelo do Azure Resource Manager é um arquivo em JavaScript Object Notation (JSON) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Esse início rápido usa o portal do Azure e a CLI do Azure para executar as etapas programáticas necessárias para criar um grupo de recursos e implantar o modelo. No entanto, você também pode usar oPowerShell, o .NET, o Ruby ou outras linguagens de programação para executar essas etapas e implantar seu modelo.

Se o seu ambiente atender aos pré-requisitos e você já estiver familiarizado com o uso de modelos do ARM, selecionar o botão Implantar no Azure abaixo abrirá o modelo para implantação no portal do Azure.

Botão para implantar o modelo do Resource Manager no Azure.

Caso você não tenha uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.

Pré-requisitos

Examinar o modelo

O modelo usado neste início rápido é proveniente dos Modelos de Início Rápido do Azure.

Observação

Atualmente, não há nenhum suporte de modelo do ARM para criar registros com novos recursos do DPS. Essa é uma solicitação comum e compreendida que está sendo considerada para implementação.

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

Há dois recursos do Azure definidos no modelo acima:

Implantar o modelo

Implantar com o Portal

  1. Selecione a imagem a seguir para entrar no Azure e abrir o modelo para implantação. O modelo cria um hub IoT e um recurso de DPS. O novo hub IoT está vinculado ao recurso de DPS.

    Botão para implantar o modelo do Resource Manager no Azure.

  2. Selecione ou insira os valores a seguir e escolha Examinar + criar.

    Parâmetros de implantação de modelo do ARM no portal

    A menos que esteja especificado para os campos abaixo, use o valor padrão para criar o recurso do hub IoT e de DPS.

    Campo Descrição
    Assinatura Selecione sua assinatura do Azure.
    Grupo de recursos Selecione Criar, insira um nome exclusivo para o grupo de recursos e clique em OK.
    Região Selecione uma região para seus recursos. Por exemplo, Leste dos EUA. Para resiliência e confiabilidade, recomendamos implantar em uma das regiões que dão suporte a Zonas de Disponibilidade.
    Nome do Hub IoT Insira um nome para o hub IoT que precisa ser globalmente exclusivo dentro do namespace .azure-devices.net. Você precisará do nome do hub na próxima seção ao validar a implantação.
    Nome do Serviço de Provisionamento Insira um nome para o novo recurso DPS (Serviço de Provisionamento de Dispositivos). O nome precisa ser globalmente exclusivo no namespace .azure-devices-provisioning.net. Você precisará do nome DPS na próxima seção quando validar a implantação.
  3. Na próxima tela, leia os termos. Se você concordar com todos os termos, clique em Criar.

    A implantação levará alguns instantes para ser concluída.

    Além do portal do Azure, você também pode usar o Azure PowerShell, a CLI do Azure e a API REST. Para saber mais sobre outros métodos de implantação, confira Implantar modelos.

Implantar com a CLI do Azure

O uso da CLI do Azure requer a versão 2.6 ou posterior. Se você estiver executando a CLI do Azure localmente, verifique a versão executando: az --version

Entre na sua conta do Azure e selecione sua assinatura.

  1. Se você estiver executando a CLI do Azure localmente em vez de no portal, será necessário fazer logon. Para fazer logon no prompt de comando, execute o comando de logon:

    az login
    

    Siga as instruções de autenticação usando o código e entre em sua conta do Azure por meio de um navegador da Web.

  2. Se você tiver várias assinaturas do Azure, entrar o Azure lhe dará acesso a todas as contas do Azure associadas às suas credenciais. Use o seguinte comando para listar as contas do Azure disponíveis para você usar:

    az account list -o table
    

    Use o comando a seguir para selecionar a assinatura que você deseja usar para executar os comandos e criar seu hub IoT e recursos de DPS. Você pode usar a ID ou nome da assinatura da saída do comando anterior:

    az account set --subscription {your subscription name or id}
    
  3. Copie e cole os comandos a seguir no prompt da CLI. Em seguida, execute os comandos pressionando Enter.

    Dica

    Os comandos solicitarão uma localização do grupo de recursos. Você pode ver uma lista dos locais disponíveis executando primeiro o comando:

    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. Os comandos solicitarão que você insira as informações a seguir. Forneça cada valor e pressione Enter.

    Parâmetro Descrição
    Nome do projeto O valor desse parâmetro será usado para criar um grupo de recursos para armazenar todos os recursos. A cadeia de caracteres rg será adicionada ao final do valor para o nome do grupo de recursos.
    local Esse valor é a região em que todos os recursos residirão.
    iotHubName Insira um nome para o hub IoT que precisa ser globalmente exclusivo dentro do namespace .azure-devices.net. Você precisará do nome do hub na próxima seção ao validar a implantação.
    provisioningServiceName Insira um nome para o novo recurso DPS (Serviço de Provisionamento de Dispositivos). O nome precisa ser globalmente exclusivo no namespace .azure-devices-provisioning.net. Você precisará do nome DPS na próxima seção quando validar a implantação.

    A CLI do Azure é usada para implantar o modelo. Além da CLI do Azure, você também pode usar o Azure PowerShell, o portal do Azure e a API REST. Para saber mais sobre outros métodos de implantação, confira Implantar modelos.

Examinar os recursos implantados

  1. Para verificar a implantação, execute o seguinte comando para listar recursos e procure pelo novo serviço de provisionamento e pelo hub IoT na saída:

     az resource list -g "${projectName}rg"
    
  2. Para verificar se o hub já está vinculado ao recurso de DPS, execute o comando DPS extension show a seguir.

     az iot dps show --name <Your provisioningServiceName>
    

    Observe os hubs que estão vinculados ao membro iotHubs.

Limpar os recursos

Outros inícios rápidos nessa coleção aproveitam esse início rápido. Se você planeja continuar trabalhando com os inícios rápidos subsequentes ou os tutoriais, não limpe os recursos criados neste início rápido. Caso contrário, use o portal do Azure ou a CLI do Azure para excluir o grupo de recursos e todos os recursos dele.

Para excluir um grupo de recursos e todos os respectivos recursos por meio do portal do Azure, basta abrir o grupo de recursos e clicar em Excluir grupo de recursos na parte superior.

Para excluir o grupo de recursos implantado usando a CLI do Azure:

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

Você também pode excluir grupos de recursos e recursos individuais usando qualquer uma das seguintes opções:

  • Portal do Azure
  • PowerShell
  • APIs REST
  • SDKs de plataforma com suporte publicados para o Azure Resource Manager ou Hub IoT Serviço de Provisionamento de Dispositivos

Próximas etapas

Neste início rápido, você implantou um hub IoT e uma instância do Serviço de Provisionamento de Dispositivos e vinculou os dois recursos. Para aprender a usar essa configuração a fim de provisionar um dispositivo, prossiga para o Início Rápido de criação de dispositivo.