Bicepを使用して量子ワークスペースを管理する

このガイドでは、Bicep テンプレートを使用して、Azure Quantumワークスペースと必要なリソース グループとストレージ アカウントを作成する方法について説明します。 テンプレートのデプロイ後、Azure Quantum で量子アプリケーションの実行を開始できます。 インフラストラクチャをコードとして扱うことで、インフラストラクチャ要件の変更を追跡し、デプロイの一貫性と再現性を高めることができます。

Bicepは、アプリケーション コードのように扱う宣言型構文を使用します。 Azure Resource Manager (ARM) テンプレートを記述するための JSON 構文に慣れている場合は、Bicepにより簡潔な構文が提供され、型の安全性が向上していることがわかります。

Prerequisites

Azure アカウント

開始する前に、アクティブなサブスクリプションを含む Azure アカウントが必要です。 Azure アカウントをお持ちでない場合は、無料で登録し、従量課金制サブスクリプションにサインアップ してください

Editor

Bicepテンプレートを作成するには、適切なエディターが必要です。 Bicep拡張機能を備えた最新バージョンの VS Code をお勧めします。

コマンド ライン デプロイ

テンプレートをデプロイするには、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"

Azure Bicep テンプレートを確認する

@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

テンプレートでは、次の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を探して、デプロイが成功したかどうかを確認します。

Important

場合によっては、デプロイ エラー (コード: PrincipalNotFound) が発生することがあります。 その理由は、リソース マネージャーがロールの割り当てを構成しようとしたときに、ワークスペース プリンシパルがまだ作成されていないことです。 その場合は、デプロイを繰り返します。 これは 2 回目の実行で成功するはずです。

デプロイメントを検証する

デプロイを確認するには、Azure portal からリソース グループを探索します。

  1. Azure portal にサインインする

  2. 左側のメニューから、[ リソース グループ] を選択します。

  3. 最後の手順でリソース グループのデプロイを選択します。 既定の名前は myResourceGroup です。 リソース グループ内にデプロイされた 2 つのリソース (ストレージ アカウントと量子ワークスペース) が表示されます。

  4. 量子ワークスペースにストレージ アカウントに必要なアクセス権があることを確認します。 ストレージ アカウントを選択します。 左側のメニュー ウィンドウで 、[アクセス制御 (IAM)] を選択し、[ ロールの割り当て ] の下に量子ワークスペース リソースが [共同作成者] の下に一覧表示されていることを確認します。

リソースをクリーンアップする

Quantum ワークスペースが不要になった場合は、リソース グループを削除できます。

az group delete --name myResourceGroup

次のステップ

ワークスペースを作成および削除できるようになったので、Azure Quantum targets について説明します。 また、Azure Pipelines または GitHub Actions 内からワークスペースのデプロイを行うツールも用意されています。