Gerenciar workspaces quânticos usando Bicep

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

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 Azure Resource Manager (ARM), descobrirá que Bicep fornece uma sintaxe mais concisa e uma segurança de tipo aprimorada.

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 da Azure, registre-se gratuitamente e inscreva-se em uma assinatura pague conforme o uso.

Editor

Para criar modelos de Bicep, você precisa de um bom editor. Recomendamos a versão mais recente do VS Code com a extensão Bicep.

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 a CLI do Azure, deverá 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, certifique-se de entrar 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 assinatura. Você também pode usar a ID da assinatura em vez do nome da assinatura.

az account set --subscription SubscriptionName

Criar um grupo de recursos vazio

Ao implantar um modelo, especifique um grupo de recursos que contenha 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 de Azure Bicep

@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([
  'westus'
  'eastus'
  'northeurope'
  'westeurope'
  'canary'
])
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 de Azure são criados pelo modelo:

O modelo também concede a permissão colaborador do workspace quântico para a conta de armazenamento. Essa etapa é necessária para que o espaço de trabalho possa ler e gravar dados do trabalho.

O modelo gera a saída a seguir. Você pode usar esses valores mais tarde para identificar o workspace quântico gerado e autenticar-o:

  • ID da assinatura que hospeda todos os recursos implantados.
  • Grupo de Recursos que contém todos os recursos implantados.
  • Nome do workspace quântico.
  • Local 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. Dê um nome à 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 o local onde 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 implementação devolve resultados. Procure por ProvisioningState para ver se a implementação foi bem-sucedida.

Importante

Em alguns casos, você pode receber 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 for o caso, basta repetir a implantação. Ela deve ter êxito na segunda execução.

Validar a implementaçã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 espaço de trabalho quântico.

  4. Verifique se o espaço de trabalho quântico tem os 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 espaço de trabalho quântico, talvez queira excluir o grupo de recursos.

az group delete --name myResourceGroup

Próximas Etapas 

Agora que você sabe criar e excluir espaços de trabalho, aprenda sobre os diferentes targets para executar algoritmos de Quantum 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.