Поделиться через


Управление квантовыми рабочими областями с помощью Azure Resource Manager

В этом руководстве описывается, как использовать шаблон Azure Resource Manager (ARM) или Bicep для создания рабочей области Azure Quantum, а также необходимых групп ресурсов и учетных записей хранения. После развертывания шаблона можно приступить к запуску квантовых приложений в Azure Quantum. Рассматривая инфраструктуру как код, вы можете отслеживать изменения требований к инфраструктуре и обеспечить согласованность и повторяемость развертываний.

Шаблон ARM является файлом нотации объектов JavaScript (JSON), определяющими инфраструктуру и конфигурацию вашего проекта. В шаблоне используется декларативный синтаксис. В декларативном синтаксисе вы можете описать предполагаемое развертывание без написания последовательности команд программирования для создания развертывания. Bicep использует декларативный синтаксис, который рассматривается как код приложения. Если вы знакомы с синтаксисом JSON для написания шаблонов Azure Resource Manager (шаблоны ARM), вы увидите, что Bicep предоставляет более лаконичный синтаксис и улучшенную безопасность типа. По сути, файлы Bicep компилируются в стандартные шаблоны ARM.

Предварительные требования

Учетная запись Azure

Для начала работы вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи Azure, зарегистрируйтесь бесплатно и зарегистрируйтесь для получения подписки с оплатой по мере использования.

Редактор

Чтобы создать шаблоны ARM или Bicep, вам нужен хороший редактор. Советуем использовать Visual Studio Code с расширением средств Resource Manager. Если необходимо установить эти средства, см. статью Краткое руководство. Создание шаблонов ARM с помощью Visual Studio Code.

Развертывание из командной строки

Для развертывания шаблона используйте либо Azure CLI, либо Azure PowerShell. При использовании Azure CLI необходимо иметь последнюю версию. Ознакомьтесь с инструкциями по установке:

Вход в Azure

После установки Azure PowerShell или Azure CLI убедитесь, что вы вошли в систему в первый раз. Выберите одну из следующих вкладок и выполните соответствующие команды командной строки, чтобы войти в Azure:

az login

Если у вас несколько подписок Azure, выберите ту, которую хотите использовать. Замените SubscriptionName своим именем подписки. Вместо имени подписки также можно использовать ее идентификатор.

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 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.

  1. Войдите на портал Azure.

  2. В меню слева выберите Группы ресурсов.

  3. Выберите группу ресурсов, развернутую в предыдущей процедуре. Имя по умолчанию — myResourceGroup. Вы должны увидеть два ресурса, развернутых в группе ресурсов — учетная запись хранения и квантовая рабочая область.

  4. Убедитесь, что квантовая рабочая область имеет необходимые права на доступ к учетной записи хранения. Выберите учетную запись хранения. В области левого меню выберите Управление доступом (IAM) и убедитесь, что в разделе Назначения ролей ресурс квантовой рабочей области имеет права участника.

Очистка ресурсов

Если вам больше не нужна квантовая рабочая область, вы можете удалить ее группу ресурсов.

az group delete --name myResourceGroup

Дальнейшие действия

Теперь, когда вы можете создавать и удалять рабочие области, ознакомьтесь с различными targets квантовыми алгоритмами в Azure Quantum. Теперь у вас также есть инструменты для развертывания рабочих областей из Azure Pipelines или GitHub Actions.