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:
- Instalar o Azure PowerShell
- Instalar a CLI do Azure no Windows
- Instalar a CLI do Azure no Linux
- Instalar a CLI do Azure no macOS
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:
- Conta de Armazenamento do Azure: conta de armazenamento para armazenar dados de entrada e saída para tarefas quânticas.
- Área de trabalho do Azure Quantum: uma coleção de recursos associados à execução de aplicações quânticas.
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.
Inicie sessão no portal do Azure.
No menu esquerdo, selecione Grupos de recursos.
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.
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.