Verwalten von Quantenarbeitsbereichen mithilfe von Bicep

In diesem Leitfaden erfahren Sie, wie Sie mithilfe einer Bicep Vorlage Azure Quantum Arbeitsbereiche und die erforderlichen Ressourcengruppen und Speicherkonten erstellen können. Nach der Vorlagenbereitstellung können Sie mit der Ausführung Ihrer Quantenanwendungen in Azure Quantum beginnen. Wenn Sie Ihre Infrastruktur als Code behandeln, können Sie Änderungen an Ihren Infrastrukturanforderungen nachverfolgen und Ihre Bereitstellungen konsistenter und wiederholbarer gestalten.

Bicep verwendet eine deklarative Syntax, die Sie wie Anwendungscode behandeln. Wenn Sie mit der JSON-Syntax zum Schreiben Azure Resource Manager (ARM)-Vorlagen vertraut sind, stellen Sie fest, dass Bicep eine präzisere Syntax und verbesserte Typsicherheit bietet.

Voraussetzungen

Azure-Konto

Bevor Sie beginnen, müssen Sie über ein Azure-Konto mit einem aktiven Abonnement verfügen. Falls Sie noch kein Azure-Konto haben, registrieren Sie sich kostenlos und melden Sie sich für ein Abonnement mit nutzungsabhängiger Zahlung an.

Herausgeber

Um Bicep Vorlagen zu erstellen, benötigen Sie einen guten Editor. Wir empfehlen die neueste Version von VS Code mit der erweiterung Bicep.

Befehlszeilenbereitstellung

Sie benötigen auch Azure PowerShell oder Azure CLI, um die Vorlage bereitzustellen. Wenn Sie die Azure CLI verwenden, müssen Sie über die neueste Version verfügen. Die Installationsanweisungen finden Sie unter:

Anmelden bei Azure

Stellen Sie nach der Installation von Azure PowerShell oder Azure CLI sicher, dass Sie sich zum ersten Mal anmelden. Wählen Sie eine der folgenden Registerkarten aus, und führen Sie die entsprechenden Befehlszeilenbefehle aus, um sich bei Azure anzumelden:

az login

Wenn Sie über mehrere Azure-Abonnements verfügen, wählen Sie das Abonnement aus, das Sie verwenden möchten. Ersetzen Sie SubscriptionName durch den Abonnementnamen. Sie können auch die Abonnement-ID anstelle des Abonnementnamens verwenden.

az account set --subscription SubscriptionName

Erstellen einer leeren Ressourcengruppe

Wenn Sie eine Vorlage bereitstellen, geben Sie eine Ressourcengruppe an, die den Quantenarbeitsbereich mit den zugehörigen Ressourcen enthält. Erstellen Sie vor dem Ausführen des Bereitstellungsbefehls die Ressourcengruppe mit Azure CLI oder Azure PowerShell.

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

Überprüfen der Azure Bicep-Vorlage

@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

Die folgenden Azure Ressourcen werden von der Vorlage erstellt:

Die Vorlage gewährt auch die Berechtigung "Quantum Workspace Contributor" für das Speicherkonto. Dieser Schritt ist erforderlich, damit der Arbeitsbereich Auftragsdaten lesen und schreiben kann.

Die Vorlage generiert die folgende Ausgabe. Sie können diese Werte später verwenden, um den generierten Quantenarbeitsbereich zu identifizieren und sich dafür zu authentifizieren:

  • Abonnement-ID die alle bereitgestellten Ressourcen hostet.
  • Ressourcengruppe mit allen bereitgestellten Ressourcen.
  • Name des Quantenarbeitsbereichs.
  • Standort des Rechenzentrums, in dem der Arbeitsbereich gehostet wird.
  • Mandanten-ID mit Anmeldeinformationen, die bei der Bereitstellung verwendet werden.

Implementieren der Vorlage

Verwenden Sie zum Bereitstellen der Vorlage entweder Azure CLI oder Azure PowerShell. Verwenden Sie die von Ihnen erstellte Ressourcengruppe. Geben Sie der Bereitstellung einen Namen, damit Sie sie im Bereitstellungsverlauf leicht identifizieren können. Ersetzen Sie {provide-the-path-to-the-template-file} und die geschweiften Klammern {} durch den Pfad zu Ihrer Vorlagendatei. Ersetzen {provide-app-name} und {provide-location} durch Werte für den Anwendungsnamen und den Speicherort, an dem der Arbeitsbereich liegen soll. Der App-Name darf nur Buchstaben enthalten.

Für die Ausführung dieses Bereitstellungsbefehls müssen Sie über die aktuelle Version der Azure CLI verfügen.

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

Der Bereitstellungsbefehl gibt Ergebnisse zurück. Suchen Sie nach ProvisioningState, um zu sehen, ob die Bereitstellung erfolgreich war.

Important

In einigen Fällen erhalten Sie möglicherweise einen Bereitstellungsfehler (Code: PrincipalNotFound). Grund hierfür ist, dass der Arbeitsbereichsprinzipal noch nicht erstellt wurde, als der Ressourcenmanager versucht hatte, die Rollenzuweisung zu konfigurieren. Wenn dies der Fall ist, wiederholen Sie einfach die Bereitstellung. Es sollte im zweiten Lauf erfolgreich sein.

Validierung der Bereitstellung

Sie können die Bereitstellung überprüfen, indem Sie die Ressourcengruppe aus dem Azure-Portal erkunden.

  1. Melden Sie sich im Azure-Portal an.

  2. Wählen Sie im linken Menü "Ressourcengruppen" aus.

  3. Wählen Sie die Ressourcengruppe aus, die im letzten Verfahren bereitgestellt wird. Der Standardname ist myResourceGroup. Zwei Ressourcen sollten in der Ressourcengruppe bereitgestellt sein: das Speicherkontingent und der Quantenarbeitsbereich.

  4. Stellen Sie sicher, dass der Quantenarbeitsbereich über erforderliche Zugriffsrechte für das Speicherkonto verfügt. Wählen Sie das Speicherkonto aus. Wählen Sie im linken Menübereich Access Control (IAM) aus, und stellen Sie sicher, dass unter Rollenzuweisungen die Quantum Workspace-Ressource unter "Mitwirkender" aufgeführt ist.

Bereinigen von Ressourcen

Wenn Sie den Quantenarbeitsbereich nicht mehr benötigen, können Sie die Ressourcengruppe löschen.

az group delete --name myResourceGroup

Nächste Schritte

Nachdem Sie nun Arbeitsbereiche erstellen und löschen können, erfahren Sie mehr über die verschiedenen Möglichkeitentargets zum Ausführen von Quantenalgorithmen in Azure Quantum. Sie verfügen jetzt auch über die Tools zum Ausführen von Arbeitsbereichsbereitstellungen direkt in Azure Pipelines oder GitHub Actions.