Gestire le aree di lavoro quantistiche usando Bicep

Questa guida illustra come usare un modello di Bicep per creare aree di lavoro Azure Quantum e i gruppi di risorse e gli account di archiviazione necessari. Dopo la distribuzione dei template, è possibile avviare l'esecuzione delle applicazioni quantistiche in Azure Quantum. La possibilità di gestire l'infrastruttura come codice consente di tenere traccia delle modifiche ai requisiti dell'infrastruttura e rende le distribuzioni più coerenti e ripetibili.

Bicep utilizza una sintassi dichiarativa che viene trattata come codice applicativo. Se si ha familiarità con la sintassi JSON per la scrittura di modelli di Azure Resource Manager (ARM), è possibile notare che Bicep fornisce una sintassi più concisa e una maggiore sicurezza dei tipi.

Prerequisites

Account di Azure

Prima di iniziare, è necessario avere un account Azure con una sottoscrizione attiva. Se non si ha un account Azure, registrarsi gratuitamente e iscriversi per ottenere un abbonamento pay-as-you-go.

Redattore

Per creare Bicep modelli, è necessario un buon editor. È consigliabile usare la versione più recente di VS Code con l'estensione Bicep.

Distribuzione da riga di comando

Per distribuire il modello, è necessario anche Azure PowerShell o l'interfaccia della riga di comando di Azure. Se si usa l'interfaccia della riga di comando di Azure, è necessario avere la versione più recente. Per le istruzioni di installazione, vedere:

Accedere ad Azure

Dopo aver installato Azure PowerShell o interfaccia della riga di comando di Azure, assicurati di accedere per la prima volta. Scegliere una delle schede seguenti ed eseguire i comandi della riga di comando corrispondenti per accedere ad Azure:

az login

Se si hanno più sottoscrizioni di Azure, selezionare quella da usare. Sostituire SubscriptionName con il nome della sottoscrizione. È possibile anche utilizzare l'ID della sottoscrizione invece del nome della sottoscrizione.

az account set --subscription SubscriptionName

Creare un gruppo di risorse vuoto

Quando si distribuisce un modello, specificare un gruppo di risorse che contiene l'area di lavoro quantistica con le risorse associate. Prima di eseguire il comando di distribuzione, creare il gruppo di risorse con l'interfaccia della riga di comando di Azure o Azure PowerShell.

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

Esaminare il modello di 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

Il modello crea le risorse Azure seguenti:

Il modello concede inoltre all'account di archiviazione l'autorizzazione Collaboratore area di lavoro quantistica. Questo passaggio è necessario affinché l'area di lavoro possa leggere e scrivere i dati del lavoro.

Il modello genera l'output seguente. È possibile usare questi valori in un secondo momento per identificare l'area di lavoro quantistica generata ed eseguirne l'autenticazione:

  • ID sottoscrizione che ospita tutte le risorse implementate.
  • gruppo di risorse contenente tutte le risorse distribuite.
  • Nome dell'area di lavoro quantistica.
  • posizione del datacenter che ospita l'area di lavoro.
  • ID tenant che contiene le credenziali usate nella distribuzione.

Implementare il modello

Per distribuire il modello, usare l'interfaccia della riga di comando di Azure o Azure PowerShell. Usa il gruppo di risorse che hai creato. Assegnare un nome alla distribuzione in modo da poterlo identificare facilmente nella cronologia di distribuzione. Sostituire {provide-the-path-to-the-template-file} e le parentesi graffe {} con il percorso del file modello. Sostituire inoltre {provide-app-name} e {provide-location} con i valori per il nome completo dell'applicazione e il percorso in cui deve risiedere l'area di lavoro. Il nome dell'app deve contenere solo lettere.

Per eseguire questo comando di distribuzione, è necessario avere la versione più recente dell'interfaccia della riga di comando di 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}"

Il comando di distribuzione restituisce i risultati. Cerca ProvisioningState per verificare se la distribuzione è riuscita.

Importante

In alcuni casi è possibile che venga visualizzato un errore di distribuzione (Codice: PrincipalNotFound). Ciò è dovuto al fatto che l'entità dell'area di lavoro non è stata ancora creata quando il gestore delle risorse ha tentato di configurare l'assegnazione di ruolo. In questo caso, ripetere semplicemente la distribuzione. Dovrebbe avere esito positivo nella seconda esecuzione.

Convalidare la distribuzione

È possibile verificare la distribuzione esplorando il gruppo di risorse dal portale di Azure.

  1. Accedi al portale di Azure.

  2. Nel menu a sinistra selezionare Gruppi di risorse.

  3. Selezionare il gruppo di risorse distribuito nell'ultima procedura. Il nome predefinito è myResourceGroup. Verranno visualizzate due risorse distribuite all'interno del gruppo di risorse, ovvero l'account di archiviazione e l'area di lavoro quantistica.

  4. Verificare che l'area di lavoro quantistica disponga dei diritti di accesso necessari per l'account di archiviazione. Selezionare l'account di archiviazione. Nel riquadro dei menu a sinistra, selezionare controllo di accesso (IAM) e verificare che sotto assegnazioni di ruolo la risorsa dell'area di lavoro quantistica sia elencata in Collaboratore.

Pulire le risorse

Se l'area di lavoro quantistica non è più necessaria, è possibile eliminare il gruppo di risorse.

az group delete --name myResourceGroup

Passaggi successivi

Ora che è possibile creare ed eliminare aree di lavoro, scopri le diverse targets per eseguire algoritmi quantistici in Azure Quantum. Sono ora disponibili anche gli strumenti per eseguire distribuzioni dell'area di lavoro da Azure Pipelines o GitHub Actions.