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:
- Installare Azure PowerShell
- Installare l'interfaccia della riga di comando di Azure in Windows
- Installare l'interfaccia della riga di comando di Azure in Linux
- Installare l'interfaccia della riga di comando di Azure in macOS
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:
- Account di archiviazione di Azure: account di archiviazione per l'archiviazione dei dati di input e output per i processi quantistici.
- Area di lavoro di Azure Quantum: raccolta di asset associati all'esecuzione di applicazioni quantistici.
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.
Accedere al portale di Azure.
Nel menu di sinistra selezionare Gruppi di risorse.
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.
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.