Azure Resource Manager を使用して Quantum ワークスペースを管理する
このガイドでは、Azure Resource Manager テンプレート (ARM テンプレート) または Bicep テンプレートを使用して、Azure Quantum ワークスペースと必要なリソース グループおよびストレージ アカウントを作成する方法について説明します。 テンプレートのデプロイ後、Azure Quantum で量子アプリケーションの実行を開始できます。 インフラストラクチャをコードとして扱うことで、インフラストラクチャの要件に加えられた変更を追跡し、デプロイの一貫性と反復可能性を高めることができます。
ARM テンプレートは JavaScript Object Notation (JSON) ファイルであり、プロジェクトのインフラストラクチャと構成が定義されています。 このテンプレートでは、宣言型の構文が使用されています。 宣言型の構文では、デプロイしようとしているものを、デプロイを作成する一連のプログラミング コマンドを記述しなくても記述できます。 Bicep では、アプリケーション コードのように扱う宣言型の構文が使用されます。 Azure Resource Manager テンプレート (ARM テンプレート) を記述するための JSON 構文に慣れている場合は、Bicep の方が構文が簡潔で、よりタイプ セーフであることに気づくでしょう。 実際、Bicep ファイルは標準の ARM テンプレートにコンパイルされます。
前提条件
Azure アカウント
開始する前に、アクティブなサブスクリプションを含む Azure アカウントが必要です。 Azure アカウントをお持ちでない場合は、無料で登録し、 従量課金制サブスクリプションにサインアップします。
エディター
ARM または Bicep のテンプレートを作成するには、適切なエディターが必要です。 Visual Studio Code と Resource Manager Tools 拡張機能をお勧めします。 これらのツールをインストールする必要がある場合は、「クイックスタート: Visual Studio Code を使用して ARM テンプレートを作成する」を参照してください。
コマンド ライン デプロイ
テンプレートをデプロイするには、Azure PowerShell または Azure CLI も必要です。 Azure CLI を使用する場合は、最新バージョンが必要です。 インストール手順については、以下を参照してください。
- Azure PowerShell をインストールするには
- Windows での Azure CLI のインストール
- Linux での Azure CLI のインストール
- macOS での Azure CLI のインストール
Azure へのサインイン
Azure PowerShell または Azure CLI をインストールした後で、初回サインインを行います。 次のいずれかのタブを選択し、対応するコマンド ライン コマンドを実行して Azure にサインインします。
az login
複数の Azure サブスクリプションがある場合は、使用するサブスクリプションを選択します。
SubscriptionName
をサブスクリプション名に置き換えます。 サブスクリプション名の代わりに、サブスクリプション ID を使用することもできます。
az account set --subscription SubscriptionName
空のリソース グループを作成する
テンプレートをデプロイするときは、Quantum ワークスペースおよびその関連するリソースを格納するリソース グループを指定します。 デプロイ コマンドを実行する前に、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 Storage アカウント: 量子ジョブの入出力データを格納するためのストレージ アカウント。
- Azure Quantum ワークスペース: 実行中の量子アプリケーションに関連付けられている資産のコレクション。
このテンプレートでは、Quantum ワークスペースに、ストレージ アカウントに対する共同作成者のアクセス許可も付与されます。 この手順は、ワークスペースでジョブ データの読み取りと書き込みを実行できるようにするために必要です。
両方のテンプレートによって次の出力が生成されます。 これらの値を後で使用して、生成された Quantum ワークスペースを識別し、それに対する認証を行うことができます。
- デプロイされたすべてのリソースをホストするサブスクリプション ID。
- デプロイされたすべてのリソースを含むリソース グループ。
- Quantum ワークスペースの名前。
- ワークスペースをホストするデータセンターの場所。
- デプロイで使用される資格情報を保持するテナント 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)。 この理由は、リソース マネージャーでロールの割り当てを構成しようとしたときに、ワークスペース プリンシパルがまだ作成されていなかったことです。 この場合は、デプロイを繰り返します。 2 回目の実行で成功するはずです。
デプロイの検証
Azure portal からリソース グループを探すことでデプロイを確認できます。
Azure portal にサインインします。
左側のメニューから [リソース グループ] を選択します。
直前の手順でデプロイしたリソース グループを選択します。 既定の名前は myResourceGroup です。 リソース グループ内にデプロイされた 2 つのリソース (ストレージ アカウントと Quantum ワークスペース) が表示されます。
Quantum ワークスペースに、ストレージ アカウントに対する必要なアクセス権があることを確認します。 [ストレージ アカウント] を選択します。 左側のメニュー ウィンドウで、[アクセス制御 (IAM)] を選択し、[ロールの割り当て] で Quantum ワークスペース リソースが [共同作成者] の下に一覧表示されていることを確認します。
リソースをクリーンアップする
Quantum ワークスペースが不要になった場合は、リソース グループを削除することをお勧めします。
az group delete --name myResourceGroup
次の手順
ワークスペースを作成および削除できるようになったので、Azure Quantum で量子アルゴリズムを実行するためのさまざまなtargets方法について説明します。 また、Azure Pipelines または GitHub Actions 内からワークスペースのデプロイを行うためのツールも用意されています。