Kwantumwerkruimten beheren met de Azure Resource Manager
In deze handleiding leert u hoe u een Azure Resource Manager-sjabloon (ARM-sjabloon) of een Bicep-sjabloon gebruikt om Azure Quantum-werkruimten en de vereiste resourcegroepen en opslagaccounts te maken. Na de implementatie van de sjabloon kunt u beginnen met het uitvoeren van uw kwantumtoepassingen in Azure Quantum. Als u uw infrastructuur als code behandelt, kunt u wijzigingen in de vereisten van uw infrastructuur bijhouden en uw implementaties consistenter en herhaalbaar maken.
Een Resource Manager-sjabloon is een JavaScript Object Notation-bestand (JSON) dat de infrastructuur en configuratie van uw project definieert. Voor de sjabloon is declaratieve syntaxis vereist. In declaratieve syntaxis beschrijft u de beoogde implementatie zonder dat u de reeks programmeeropdrachten voor het maken van de implementatie hoeft te schrijven. Bicep gebruikt een declaratieve syntaxis die u beschouwt als toepassingscode. Als u bekend bent met de JSON-syntaxis voor het schrijven van Azure Resource Manager-sjablonen (ARM-sjablonen), zult u merken dat Bicep een beknoptere syntaxis en verbeterde typeveiligheid biedt. In feite worden Bicep-bestanden gecompileerd naar standaard ARM-sjablonen.
Vereisten
Azure-account
Voordat u begint, moet u een Azure-account hebben met een actief abonnement. Als u geen Azure-account hebt, registreert u zich gratis en meldt u zich aan voor een abonnement op basis van betalen per gebruik.
Editor
Als u ARM- of Bicep-sjablonen wilt maken, hebt u een goede editor nodig. We raden Visual Studio Code met de extensie Resource Manager Tools aan. Als u deze hulpprogramma's wilt installeren, raadpleegt u quickstart: ARM-sjablonen maken met Visual Studio Code.
Implementatie via opdrachtregels
U hebt ook Azure PowerShell of Azure CLI nodig om het sjabloon te implementeren. Als u Azure CLI gebruikt, moet u de nieuwste versie hebben. Zie voor installatie-instructies:
- Azure PowerShell installeren
- Azure CLI installeren in Windows
- Azure CLI installeren in Linux
- Azure CLI installeren in macOS
Aanmelden bij Azure
Nadat u Azure PowerShell of Azure CLI hebt geïnstalleerd moet u zich voor de eerste keer aanmelden. Kies een van de volgende tabbladen en voer de bijbehorende opdrachtregelopdrachten uit om u aan te melden bij Azure:
az login
Als u meerdere Azure-abonnementen hebt, selecteert u het abonnement dat u wilt gebruiken. Vervang door SubscriptionName
de naam van uw abonnement. U kunt ook de abonnements-id gebruiken in plaats van de abonnementsnaam.
az account set --subscription SubscriptionName
Een lege resourcegroep maken
Wanneer u een sjabloon implementeert, geeft u een resourcegroep op die de kwantumwerkruimte met de bijbehorende resources bevat. Voordat u de opdracht voor de implementatie uitvoert, maakt u de resourcegroep met behulp van Azure CLI of Azure PowerShell.
az group create --name myResourceGroup --location "East US"
De sjabloon controleren
@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
De volgende Azure-resources worden door beide sjablonen gemaakt:
- Azure Storage-account: opslagaccount voor het opslaan van invoer- en uitvoergegevens voor kwantumtaken.
- Azure Quantum-werkruimte: een verzameling assets die zijn gekoppeld aan het uitvoeren van kwantumtoepassingen.
De sjablonen verlenen de kwantumwerkruimte ook inzendermachtigingen voor het opslagaccount. Deze stap is nodig zodat de werkruimte taakgegevens kan lezen en schrijven.
Beide sjablonen genereren de volgende uitvoer. U kunt deze waarden later gebruiken om de gegenereerde kwantumwerkruimte te identificeren en deze te verifiëren:
- Abonnements-id die als host fungeert voor alle geïmplementeerde resources.
- Resourcegroep met alle geïmplementeerde resources.
- Naam van de kwantumwerkruimte.
- Locatie van het datacenter dat als host fungeert voor de werkruimte.
- Tenant-id met referenties die tijdens de implementatie worden gebruikt.
De sjabloon implementeren
U kunt Azure PowerShell of Azure CLI gebruiken om het sjabloon te implementeren. Gebruik de resourcegroep die u hebt gemaakt. Geef de implementatie een naam zodat u deze gemakkelijk kunt herkennen in de implementatiegeschiedenis. Vervang {provide-the-path-to-the-template-file}
en de accolades {}
door het pad naar het sjabloonbestand. Vervang bovendien en {provide-location}
door {provide-app-name}
waarden voor de algemene toepassingsnaam en de locatie waar de werkruimte zich moet bevinden. De naam van de app mag alleen letters bevatten.
Als u deze implementatieopdracht wilt uitvoeren, moet u beschikken over de nieuwste versie van 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}"
De implementatieopdracht retourneert resultaten. Zoek naar ProvisioningState
om te controleren of de implementatie is geslaagd.
Belangrijk
In sommige gevallen krijgt u mogelijk een implementatiefout (Code: PrincipalNotFound). De reden hiervoor is dat de werkruimte-principal nog niet is gemaakt toen de resourcemanager de roltoewijzing probeerde te configureren. Als dit het geval is, herhaalt u de implementatie. Dit zou in de tweede uitvoering moeten lukken.
De implementatie valideren
U kunt de implementatie controleren door de resourcegroep te bekijken vanuit de Azure Portal.
Meld u aan bij de Azure-portal.
Selecteer Resourcegroepen in het linkermenu.
Selecteer de resourcegroep die in de laatste procedure is geïmplementeerd. De standaardnaam is myResourceGroup. U ziet dat er twee resources zijn geïmplementeerd in de resourcegroep: het opslagaccount en de kwantumwerkruimte.
Controleer of de kwantumwerkruimte de benodigde toegangsrechten voor het opslagaccount heeft. Selecteer het opslagaccount. Selecteer in het linkermenuvenster Access Control (IAM) en controleer of onder Roltoewijzingen de kwantumwerkruimteresource wordt vermeld onder Inzender.
Resources opschonen
Als u de kwantumwerkruimte niet meer nodig hebt, kunt u de resourcegroep verwijderen.
az group delete --name myResourceGroup
Volgende stappen
Nu u werkruimten kunt maken en verwijderen, leert u meer over de verschillende targets om kwantumalgoritmen in Azure Quantum uit te voeren. U beschikt nu ook over de hulpprogramma's voor het uitvoeren van werkruimte-implementaties vanuit Azure Pipelines of GitHub Actions.