Condividi tramite


Gestire aree di lavoro quantistiche con Azure Resource Manager

In questa guida si apprenderà come usare un modello di Azure Resource Manager (ARM) o un modello Bicep per creare aree di lavoro di Azure Quantum e i gruppi di risorse e gli account di archiviazione necessari. Dopo la distribuzione del modello, è possibile iniziare a eseguire le 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.

Un modello di Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello usa la sintassi dichiarativa. Nella sintassi dichiarativa si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari per creare la distribuzione. Bicep usa una sintassi del codice dichiarativa gestita come codice dell'applicazione. Se si ha familiarità con la sintassi JSON per la scrittura di modelli di Azure Resource Manager (modelli di ARM), si scoprirà che Bicep offre una sintassi più concisa e una maggiore sicurezza dei tipi. Infatti, i file Bicep vengono compilati in modelli di ARM standard.

Prerequisiti

Account Azure

Prima di iniziare, è necessario disporre di un account Azure con una sottoscrizione attiva. Se non si ha un account Azure, registrarsi gratuitamente e iscriversi per ottenere una sottoscrizione con pagamento in base al consumo.

Editor

Per creare i modelli ARM o Bicep, è necessario un buon editor. È consigliabile usare Visual Studio Code con l'estensione Strumenti di Resource Manager. Se è necessario installare questi strumenti, vedere Avvio rapido: Creare modelli di ARM con Visual Studio Code.

Distribuzione dalla riga di comando

Per distribuire il modello, è necessario usare anche l'interfaccia della riga di comando di Azure oppure Azure PowerShell. 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 l'interfaccia della riga di comando di Azure, assicurarsi 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. Invece del nome della sottoscrizione, è anche possibile usare un ID sottoscrizione.

az account set --subscription SubscriptionName

Creare un gruppo di risorse vuoto

Quando si distribuisce un modello, si specifica un gruppo di risorse che conterrà l'area di lavoro quantistico con le relative risorse associate. Prima di eseguire il comando di distribuzione, creare il gruppo di risorse usando l'interfaccia della riga di comando di Azure oppure Azure PowerShell.

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

Rivedere il modello

@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

Con entrambi i modelli vengono create le risorse di Azure seguenti:

I modelli concedono anche all'area di lavoro quantum le autorizzazioni Collaboratore per l'account di archiviazione. Questo passaggio è necessario in modo che l'area di lavoro possa leggere e scrivere i dati del processo.

Entrambi i modelli generano 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 distribuite.
  • Gruppo di risorse contenente tutte le risorse distribuite.
  • Nome dell'area di lavoro quantistica.
  • Posizione del data center che ospita l'area di lavoro.
  • ID tenant che contiene le credenziali usate nella distribuzione.

Distribuire il modello

Per distribuire il modello, usare l'interfaccia della riga di comando di Azure o Azure PowerShell. Usare il gruppo di risorse creato. Assegnare un nome alla distribuzione in modo da poterla identificare facilmente nella cronologia di distribuzione. Sostituire {provide-the-path-to-the-template-file} e le parentesi graffe {} con il percorso del file di modello. Sostituire {provide-app-name} e {provide-location} con i valori per il nome complessivo 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 usare 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 risultati. Cercare ProvisioningState per verificare se la distribuzione è riuscita.

Importante

In alcuni casi potrebbe essere visualizzato un errore di distribuzione (Codice: PrincipalNotFound). Il motivo è 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 la distribuzione. Dovrebbe avere esito positivo nella seconda esecuzione.

Convalidare la distribuzione

Per verificare la distribuzione, esplorare il gruppo di risorse nel portale di Azure.

  1. Accedere al portale di Azure.

  2. Nel menu di sinistra selezionare Gruppi di risorse.

  3. Selezionare il gruppo di risorse distribuito nell'ultima procedura. Il nome predefinito è myResourceGroup. Dovrebbero essere presenti due risorse distribuite all'interno del gruppo di risorse: l'account di archiviazione e l'area di lavoro quantistica.

  4. Verificare che l'area di lavoro quantistica abbia i diritti di accesso necessari per l'account di archiviazione. Selezionare l'account di archiviazione. Nel riquadro del menu a sinistra selezionare Controllo di accesso (IAM) e verificare che in 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, è possibile ottenere informazioni sui diversi targets algoritmi quantistici in Azure Quantum. Sono ora disponibili anche gli strumenti per eseguire distribuzioni dell'area di lavoro dall'interno di Azure Pipelines o GitHub Actions.