Gerir espaços de trabalho quânticos usando o Bicep

Neste guia, aprenda a usar um modelo Bicep para criar espaços de trabalho no Azure Quantum 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 torna suas implantações mais consistentes e repetíveis.

O Bicep usa uma sintaxe declarativa que você trata como código de aplicativo. Se estiver familiarizado com a sintaxe JSON para escrever templates Azure Resource Manager (ARM), verá que o Bicep oferece uma sintaxe mais concisa e uma segurança de tipos melhorada.

Pré-requisitos

Conta do Azure

Antes de começar, você deve ter uma conta do Azure com uma assinatura ativa. Se não tiver uma conta do Azure, registe-se gratuitamente e inscreva-se numa subscrição pré-paga.

Editor

Para criar modelos de Bicep, precisas 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 instruções de instalação, consulte:

Iniciar sessão 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 subscrições do Azure, selecione a subscrição que pretende utilizar. Substitua SubscriptionName pelo 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

Ao implementar um modelo, especifique um grupo de recursos que contenha o espaço de trabalho quântico com os seus recursos associados. Antes de executares o comando de deployment, cria o grupo de recursos com CLI do Azure ou Azure PowerShell.

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

Revise 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 do Azure são criados pelo modelo:

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

O template gera a seguinte saída. Você pode usar esses valores posteriormente para identificar o espaço de trabalho quântico gerado e autenticá-lo:

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

Implementar 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 chavetas {} com o caminho para o ficheiro 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 espaço de trabalho deve residir. O nome do aplicativo 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 deployment retorna resultados. Procure por ProvisioningState para verificar se a implantação foi bem-sucedida.

Importante

Em alguns casos, você pode receber um erro de implantação (Código: PrincipalNotFound). A razão para isso é que o principal do espaço de trabalho ainda não foi criado quando o gestor de recursos tentou configurar a atribuição de funções. Se este for o caso, basta repetir a implantação. Deve ter sucesso na segunda tentativa.

Validar a implementação

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

  1. Inicie sessão no portal Azure.

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

  3. Selecione o grupo de recursos para implantação no último procedimento. O nome padrão é myResourceGroup. Você verá dois recursos implantados dentro do 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 direitos de acesso necessários para a conta de armazenamento. Selecione a conta de armazenamento. No painel de menu esquerdo, selecione Controle de Acesso (IAM) e verifique se em Atribuições de função o recurso de quantum workspace está listado em Colaborador.

Limpeza de recursos

Se você não precisar mais do espaço de trabalho quântico, convém excluir o grupo de recursos.

az group delete --name myResourceGroup

Passos seguintes

Agora que você pode criar e excluir espaços de trabalho, saiba mais sobre as diferentes maneiras de targets executar algoritmos quânticos no Azure Quantum. Agora tu também tens as ferramentas para implementar ambientes de trabalho de dentro do Azure Pipelines ou GitHub Actions.