Dela via


Hantera kvantarbetsytor med Azure Resource Manager

I den här guiden lär du dig att använda en Azure Resource Manager-mall (ARM-mall) eller en Bicep-mall för att skapa Azure Quantum-arbetsytor och nödvändiga resursgrupper och lagringskonton. Efter malldistributionen kan du börja köra kvantprogram i Azure Quantum. Genom att behandla din infrastruktur som kod kan du spåra ändringar i dina infrastrukturkrav och göra distributionerna mer konsekventa och repeterbara.

En ARM-mall är en JSON-fil (JavaScript Object Notation) som definierar infrastrukturen och konfigurationen för ditt projekt. Mallen använder deklarativ syntax. I deklarativ syntax beskriver du din avsedda distribution utan att skriva sekvensen med programmeringskommandon för att skapa den. Bicep använder en deklarativ syntax som du behandlar som programkod. Om du är bekant med JSON-syntaxen för att skriva Azure Resource Manager-mallar (ARM-mallar) ser du att Bicep ger en mer koncis syntax och förbättrad typsäkerhet. Faktum är att Bicep-filer kompileras till ARM-standardmallar.

Förutsättningar

Azure-konto

Innan du börjar måste du ha ett Azure-konto med en aktiv prenumeration. Om du inte har något Azure-konto kan du registrera dig kostnadsfritt och registrera dig för en betala per användning-prenumeration.

Redigerare

För att skapa ARM- eller Bicep-mallar behöver du en bra redigerare. Vi rekommenderar Visual Studio Code med tillägget Resource Manager Tools. Om du behöver installera de här verktygen kan du läsa Snabbstart: Skapa ARM-mallar med Visual Studio Code.

Kommandoradsdistribution

Du behöver också antingen Azure PowerShell eller Azure CLI för att distribuera mallen. Om du använder Azure CLI måste du ha den senaste versionen. Installationsanvisningarna finns i:

Logga in på Azure

När du har installerat antingen Azure PowerShell eller Azure CLI kontrollerar du att du loggar in för första gången. Välj någon av följande flikar och kör motsvarande kommandoradskommandon för att logga in på Azure:

az login

Om du har flera Azure-prenumerationer väljer du den prenumeration som du vill använda. Ersätt SubscriptionName med ditt prenumerationsnamn. Du kan också använda prenumerations-ID:t i stället för prenumerationsnamnet.

az account set --subscription SubscriptionName

Skapa en tom resursgrupp

När du distribuerar en mall anger du en resursgrupp som ska innehålla kvantarbetsytan med dess associerade resurser. Innan du kör distributionskommandot skapar du resursgruppen med antingen Azure CLI eller Azure PowerShell.

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

Granska mallen

@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

Följande Azure-resurser skapas av båda mallarna:

Mallarna ger också kvantarbetsytan deltagarbehörighet till lagringskontot. Det här steget behövs så att arbetsytan kan läsa och skriva jobbdata.

Båda mallarna genererar följande utdata. Du kan använda dessa värden senare för att identifiera den genererade kvantarbetsytan och autentisera till den:

  • Prenumerations-ID som är värd för alla distribuerade resurser.
  • Resursgrupp som innehåller alla distribuerade resurser.
  • Namnet på kvantarbetsytan.
  • Plats för det datacenter som är värd för arbetsytan.
  • Klientorganisations-ID med autentiseringsuppgifter som används vid distributionen.

Distribuera mallen

Om du vill distribuera mallen använder du antingen Azure CLI eller Azure PowerShell. Använd den resursgrupp som du skapade. Ge distributionen ett namn så att du enkelt kan identifiera den i distributionshistoriken. Ersätt {provide-the-path-to-the-template-file} och klammerparenteserna {} med sökvägen till mallfilen. Ersätt och {provide-app-name}{provide-location} med värden för det övergripande programnamnet och den plats där arbetsytan ska finnas. Appnamnet får bara innehålla bokstäver.

För att köra det här distributionskommandot måste du ha den senaste versionen av Azure CLI.

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}"

Distributionskommandot returnerar resultat. Leta efter för ProvisioningState att se om distributionen lyckades.

Viktigt

I vissa fall kan du få ett distributionsfel (Kod: PrincipalNotFound). Orsaken till detta är att arbetsytans huvudnamn inte skapades ännu när resurshanteraren försökte konfigurera rolltilldelningen. Om så är fallet upprepar du bara distributionen. Det bör lyckas i den andra körningen.

Verifiera distributionen

Du kan verifiera distributionen genom att utforska resursgruppen från Azure Portal.

  1. Logga in på Azure-portalen.

  2. Välj Resursgrupper på den vänstra menyn.

  3. Välj den resursgrupp som distribueras i den senaste proceduren. Standardnamnet är myResourceGroup. Du bör se två resurser som distribuerats i resursgruppen – lagringskontot och kvantarbetsytan.

  4. Kontrollera att kvantarbetsytan har nödvändiga åtkomsträttigheter för lagringskontot. Välj lagringskontot. I det vänstra menyfönstret väljer du Access Control (IAM) och kontrollerar att under Rolltilldelningar visas kvantarbetsytans resurs under Deltagare.

Rensa resurser

Om du inte längre behöver kvantarbetsytan kanske du vill ta bort resursgruppen.

az group delete --name myResourceGroup

Nästa steg

Nu när du kan skapa och ta bort arbetsytor kan du lära dig mer om hur targets du kör kvantalgoritmer i Azure Quantum. Nu har du också verktyg för att distribuera arbetsytor inifrån Azure Pipelines eller GitHub Actions.