Compartilhar via


Gerenciar workspaces quânticos com o Azure Resource Manager

Neste guia, aprenda a usar um modelo do ARM (modelo do Azure Resource Manager) ou um modelo Bicep para criar workspaces do Azure Quantum e os grupos de recursos e contas de armazenamento necessários. Após a implantação de modelo, você pode começar a executar seus aplicativos quânticos no Azure Quantum. Tratar sua infraestrutura como código permite que você controle as alterações em seus requisitos de infraestrutura e torna suas implantações mais consistentes e reproduzíveis.

Um modelo ARM é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do projeto. O modelo usa a sintaxe declarativa. Na sintaxe declarativa, você descreve a implantação pretendida sem gravar a sequência de comandos de programação para criar a implantação. O Bicep usa uma sintaxe declarativa que você trata como o código do aplicativo. Se você estiver familiarizado com a sintaxe JSON para escrever modelos do ARM (Azure Resource Manager), verá que o Bicep fornece uma sintaxe mais concisa e segurança de tipos aprimorada. Na verdade, os arquivos Bicep são compilados em modelos do ARM padrão.

Pré-requisitos

Conta do Azure

Antes de começar, você precisa ter uma conta do Azure com uma assinatura ativa. Se você não tiver uma conta do Azure, registre-se gratuitamente e inscreva-se em uma assinatura paga conforme o uso.

Editor

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

Implantação de linha de comando

Você também precisa do Azure PowerShell ou da CLI do Azure para implantar o modelo. Se você usar CLI do Azure, precisará ter a versão mais recente. Para obter as instruções de instalação, confira:

Entrar no Azure

Depois de instalar o Azure PowerShell ou a CLI do Azure, é preciso que você entre pela primeira vez. Escolha uma das seguintes guias e execute os comandos de linha de comando correspondentes para entrar no Azure:

az login

Se tiver várias assinaturas do Azure, selecione a que deseja usar. Substitua SubscriptionName pelo nome da sua assinatura. Em vez do nome da assinatura, você também pode usar a ID da assinatura.

az account set --subscription SubscriptionName

Criar um grupo de recursos vazio

Ao implantar um modelo, você especificará um grupo de recursos que conterá o workspace quântico com seus recursos associados. Antes de executar o comando de implantação, crie o grupo de recursos com a CLI do Azure ou o Azure PowerShell.

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

Examinar 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 estes modelos:

Os modelos também concedem as permissões de contribuidor do workspace quântico à conta de armazenamento. Essa etapa é necessária para que o workspace possa ler e gravar dados de trabalho.

Ambos os modelos geram a saída a seguir. Você pode usar esses valores posteriormente para identificar o workspace quântico gerado e autenticá-lo:

  • ID da assinatura que hospeda todos os recursos implantados.
  • Grupo de recursos que contém todos os recursos implantados.
  • Nome do workspace quântico.
  • Localização do datacenter que hospeda o workspace.
  • ID do locatário contendo credenciais usadas na implantação.

Implantar o modelo

Para implantar o modelo, use a CLI do Azure ou o Azure PowerShell. Use o grupo de recursos que você criou anteriormente. Dê um nome para a implantação para que você possa identificá-la facilmente no histórico de implantação. Substitua {provide-the-path-to-the-template-file} e as chaves {} pelo caminho para o arquivo de modelo. Além disso, substitua {provide-app-name} e {provide-location} por valores para o nome geral do aplicativo e a localização na qual o workspace deve residir. O nome do aplicativo deve conter apenas letras.

Para executar esse comando de implantação, você precisa 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 implantação retorna os resultados. Procure ProvisioningState para ver se a implantação foi bem-sucedida.

Importante

Em alguns casos, você pode obter um erro de implantação (código: PrincipalNotFound). O motivo para isso é que a entidade de segurança do workspace ainda não tinha sido criada quando o gerenciador de recursos tentou configurar a atribuição de função. Se esse é o caso, basta repetir a implantação. Ela deve ter êxito na segunda execução.

Validar a implantação

Você pode verificar a implantação explorando o grupo de recursos no portal do Azure.

  1. Entre no portal do Azure.

  2. No menu à esquerda, selecione Grupos de recursos.

  3. Selecione o grupo de recursos implantado no último procedimento. O nome padrão é myResourceGroup. Você deve ver dois recursos implantados no grupo de recursos: a conta de armazenamento e o workspace quântico.

  4. Verifique se o workspace quântico tem direitos de acesso necessários para a conta de armazenamento. Selecione a conta de armazenamento. No painel de menu à esquerda, selecione Controle de Acesso (IAM) e verifique se em Atribuições de função o recurso de workspace quântico está listado em Contribuidor.

Limpar os recursos

Se você não precisar mais do workspace quântico, talvez queira excluir o grupo de recursos.

az group delete --name myResourceGroup

Próximas etapas

Agora que você pode criar e excluir workspaces, saiba mais sobre o diferente targets para executar algoritmos quânticos no Azure Quantum. Agora você também tem as ferramentas para realizar implantações de workspace de dentro do Azure Pipelines ou do GitHub Actions.