Partilhar via


Gerir áreas de trabalho quânticas com a Resource Manager do Azure

Neste guia, saiba como utilizar um modelo do Azure Resource Manager (modelo do ARM) ou um modelo bicep para criar áreas de trabalho do Azure Quantum e os grupos de recursos e contas de armazenamento necessários. Após a implementação do modelo, pode começar a executar as suas aplicações quânticas no Azure Quantum. A utilização da sua infraestrutura como código permite-lhe monitorizar as alterações aos requisitos de infraestrutura e torna as suas implementações mais consistentes e repetíveis.

Um modelo do ARM é um ficheiro JavaScript Object Notation (JSON) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Em sintaxe declarativa o programador descreve a implementação pretendida sem escrever a sequência de comandos de programação para criar a implementação. O Bicep utiliza uma sintaxe declarativa que pode empregar como código de aplicação. Se estiver familiarizado com a sintaxe JSON para escrever modelos do Azure Resource Manager (modelos arm), verá que o Bicep fornece uma sintaxe mais concisa e uma segurança de tipo melhorada. Na verdade, os ficheiros do Bicep são compilados em modelos do ARM padrão.

Pré-requisitos

Conta do Azure

Antes de começar, tem de ter uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, registe-se gratuitamente e inscreva-se numa subscrição pay as you go.

Editor

Para criar modelos ARM ou Bicep, precisa de um bom editor. Recomendamos o Visual Studio Code com a extensão Resource Manager Tools. Se precisar de instalar estas ferramentas, veja Início Rápido: Criar modelos do ARM com o Visual Studio Code.

Implementação da linha de comandos

Também precisa de Azure PowerShell ou da CLI do Azure para implementar o modelo. Se utilizar a CLI do Azure, tem de ter a versão mais recente. Para obter as instruções de instalação, consulte:

Iniciar sessão no Azure

Depois de instalar Azure PowerShell ou a CLI do Azure, certifique-se de que inicia sessão pela primeira vez. Escolha um dos seguintes separadores e execute os comandos da linha de comandos correspondentes para iniciar sessão no Azure:

az login

Se tiver várias subscrições do Azure, selecione a subscrição que pretende utilizar. Substitua pelo SubscriptionName nome da sua subscrição. Também pode utilizar o ID da subscrição em vez do nome da subscrição.

az account set --subscription SubscriptionName

Criar um grupo de recursos vazio

Quando implementa um modelo, especifica um grupo de recursos que irá conter a área de trabalho quântica com os respetivos recursos associados. Antes de executar o comando de implementação, crie o grupo de recursos com a CLI do Azure ou o Azure PowerShell.

az group create --name myResourceGroup --location "East US"

Rever o modelo

@description('Application name used as prefix for the Azure Quantum workspace and its associated Storage account.')
param appName string

@description('Location of the Azure Quantum workspace and its associated Storage account.')
@allowed([
  'eastus'
  'japaneast'
  'japanwest'
  'northeurope'
  'uksouth'
  'ukwest'
  'westcentralus'
  'westeurope'
  'westus'
  'westus2'
])
param location string

var quantumWorkspaceName = '${appName}-ws'
var storageAccountName = '${appName}${substring(uniqueString(resourceGroup().id), 0, 5)}'


resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

resource quantumWorkspace 'Microsoft.Quantum/Workspaces@2019-11-04-preview' = {
  name: quantumWorkspaceName
  location: location
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    providers: [
      {
        providerId: 'Microsoft'
        providerSku: 'DZH3178M639F'
        applicationName: '${quantumWorkspaceName}-Microsoft'
      }
    ]
    storageAccount: storageAccount.id
  }
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  scope: storageAccount
  name: guid(quantumWorkspace.id, '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c', storageAccount.id)
  properties: {
    roleDefinitionId: '/subscriptions/${subscription().subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c'
    principalId: reference(quantumWorkspace.id, '2019-11-04-preview', 'full').identity.principalId
  }
}

output subscription_id string = subscription().subscriptionId
output resource_group string = resourceGroup().name
output name string = quantumWorkspace.name
output location string = quantumWorkspace.location
output tenant_id string = subscription().tenantId

Os seguintes recursos do Azure são criados por ambos os modelos:

Os modelos também concedem permissões de Contribuidor da área de trabalho quântica à conta de armazenamento. Este passo é necessário para que a área de trabalho possa ler e escrever dados da tarefa.

Ambos os modelos geram o seguinte resultado. Pode utilizar estes valores mais tarde para identificar a área de trabalho quântica gerada e autenticar na mesma:

  • ID da subscrição que aloja todos os recursos implementados.
  • Grupo de Recursos que contém todos os recursos implementados.
  • Nome da área de trabalho quântica.
  • Localização do datacenter que aloja a área de trabalho.
  • ID do inquilino com credenciais utilizadas na implementação.

Implementar o modelo

Para implementar o modelo, utilize a CLI do Azure ou Azure PowerShell. Utilize o grupo de recursos que criou. Atribua um nome à implementação para que possa identificá-la facilmente no histórico de implementações. Substitua {provide-the-path-to-the-template-file} e as chavetas {} pelo caminho para o ficheiro de modelo. Além disso, substitua {provide-app-name} e {provide-location} por valores para o nome geral da aplicação e a localização onde a área de trabalho deve residir. O nome da aplicação deve conter apenas letras.

Para executar este comando de implementação, tem de ter a versão mais recente da CLI do Azure.

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name myDeployment \
  --resource-group myResourceGroup \
  --template-file $templateFile \
  --parameters appName="{provide-app-name}" location="{provide-location}"

O comando de implementação devolve resultados. Procure para ProvisioningState ver se a implementação foi bem-sucedida.

Importante

Em alguns casos, poderá obter um erro de implementação (Código: PrincipalNotFound). O motivo é que o principal da área de trabalho ainda não foi criado quando o gestor de recursos tentou configurar a atribuição de função. Se for este o caso, basta repetir a implementação. Deverá ser bem-sucedido na segunda execução.

Validar a implementação

Pode verificar a implementação ao explorar o grupo de recursos a partir do portal do Azure.

  1. Inicie sessão no portal do Azure.

  2. No menu esquerdo, selecione Grupos de recursos.

  3. Selecione o grupo de recursos implementado no último procedimento. O nome predefinido é myResourceGroup. Deverá ver dois recursos implementados no grupo de recursos: a conta de armazenamento e a área de trabalho quântica.

  4. Verifique se a área de trabalho quântica tem os direitos de acesso necessários para a conta de armazenamento. Selecione a conta de armazenamento. No painel de menus esquerdo, selecione Controlo de Acesso (IAM) e verifique se, em Atribuições de funções, o recurso da área de trabalho quântica está listado em Contribuidor.

Limpar os recursos

Se já não precisar da área de trabalho quântica, poderá querer eliminar o grupo de recursos.

az group delete --name myResourceGroup

Passos seguintes

Agora que pode criar e eliminar áreas de trabalho, saiba mais sobre os diferentes targets para executar algoritmos quânticos no Azure Quantum. Agora, também tem as ferramentas para realizar implementações de áreas de trabalho a partir dos Pipelines do Azure ou GitHub Actions.