你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 资源管理器管理量子工作区
本指南介绍如何使用 Azure 资源管理器模板(ARM 模板)或 Bicep 模板创建 Azure Quantum 工作区以及所需的资源组和存储帐户。 部署模板后,可以在 Azure Quantum 中开始运行量子应用程序。 将基础结构视为代码,可以跟踪基础结构要求的更改,并提升部署的一致性和可重复性。
ARM 模板是定义项目基础结构和配置的 JavaScript 对象表示法 (JSON) 文件。 模板使用声明性语法。 在声明性语法中,你可以在不编写创建部署的编程命令序列的情况下,描述预期部署。 Bicep 使用声明性语法,其处理方式与应用程序代码相同。 如果你熟悉用于编写 Azure 资源管理器模板(ARM 模板)的 JSON 语法,你会发现 Bicep 提供了更简洁的语法和更好的类型安全性。 事实上,Bicep 文件编译成标准的 ARM 模板。
先决条件
Azure 帐户
在开始之前,必须拥有一个包含有效订阅的 Azure 帐户。 如果没有 Azure 帐户,请免费注册并注册 即用即付订阅。
编辑器
若要创建 ARM 或 Bicep 模板,需要一个良好的编辑器。 我们建议使用带有资源管理器工具扩展的 Visual Studio Code。 如果需要安装这些工具,请参阅快速入门:使用 Visual Studio Code 创建 ARM 模板。
命令行部署
还需要使用 Azure PowerShell 或 Azure CLI 来部署模板。 如果使用 Azure CLI,则必须具有最新版本。 有关安装说明,请参阅:
登录 Azure
安装 Azure PowerShell 或 Azure CLI 后,请务必完成首次登录。 选择以下选项卡之一,并运行相应的命令行命令登录到 Azure:
az login
如果你有多个 Azure 订阅,请选择要使用的订阅。 使用你的订阅名称替换 SubscriptionName
。 也可以使用订阅 ID 替换订阅名称。
az account set --subscription SubscriptionName
创建空资源组
部署模板时,需指定一个将要包含量子工作区及其关联资源的资源组。 在运行部署命令之前,请使用 Azure CLI 或 Azure PowerShell 创建该资源组。
az group create --name myResourceGroup --location "East US"
查看模板
@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
这两个模板创建以下 Azure 资源:
- Azure 存储帐户:用于存储量子作业输入和输出数据的存储帐户。
- Azure Quantum 工作区:与正在运行的量子应用程序关联的资产集合。
这些模板还会向存储帐户授予量子工作区“参与者”权限。 需要执行此步骤,以便工作区可以读取和写入作业数据。
这两个模板都生成以下输出。 稍后可以使用这些值来识别生成的量子工作区并对其进行身份验证:
- 托管所有已部署资源的“订阅 ID”。
- 包含所有已部署资源的“资源组”。
- 量子工作区的“名称”。
- 托管工作区的数据中心的“位置”。
- 保存部署时使用的凭据的“租户 ID”。
部署模板
若要部署模板,请使用 Azure CLI 或 Azure PowerShell。 使用创建的资源组。 为部署指定一个适当的名称,以便可以在部署历史记录中轻松识别该部署。 将 {provide-the-path-to-the-template-file}
和花括号 {}
替换为模板文件的路径。 此外,请将 {provide-app-name}
和 {provide-location}
替换为整个应用程序名称和工作区所在位置的值。 应用名称只能包含字母。
若要运行此部署命令,必须具有 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}"
部署命令将返回结果。 查看 ProvisioningState
以确定部署是否成功。
重要
在某些情况下,你可能会遇到部署错误(代码:PrincipalNotFound)。 出错的原因是资源管理器尝试配置角色分配时尚未创建工作区主体。 如果出现这种情况,只需重复部署即可。 第二次运行部署应会成功。
验证部署
可以通过在 Azure 门户中浏览资源组来验证部署。
登录 Azure 门户。
在左侧菜单中选择“资源组”。
选择在上一过程中部署的资源组。 默认名称为 myResourceGroup。 应会看到资源组中部署了两个资源 - 存储帐户和量子工作区。
验证量子工作区是否拥有存储帐户的必要访问权限。 选择“存储帐户”。 在左侧菜单窗格中选择“访问控制(IAM)”,并在“角色分配”下确认量子工作区资源是否列在“参与者”下。
清理资源
如果你不再需要量子工作区,可能需要删除资源组。
az group delete --name myResourceGroup
后续步骤
创建和删除工作区后,请了解在 Azure Quantum 中运行量子算法的不同targets。 现在,你还可以使用相应的工具从 Azure Pipelines 或 GitHub Actions 内部进行工作区部署。