Share via


Azure Resource Manager를 사용하여 양자 작업 영역 만들기

이 가이드에서는 ARM 템플릿(Azure Resource Manager 템플릿) 또는 Bicep 템플릿을 사용하여 Azure Quantum 작업 영역 및 필요한 리소스 그룹 및 스토리지 계정을 만드는 방법을 알아봅니다. 템플릿 배포 후 Azure Quantum에서 양자 애플리케이션 실행을 시작할 수 있습니다. 인프라를 코드로 처리하면 인프라 요구 사항에 대한 변경 내용을 추적할 수 있으며 배포의 일관성과 반복성이 높아집니다.

ARM 템플릿은 프로젝트에 대한 인프라 및 구성을 정의하는 JSON(JavaScript Object Notation) 파일입니다. 이 템플릿은 선언적 구문을 사용합니다. 선언적 구문에서는 배포를 만들기 위한 프로그래밍 명령의 시퀀스를 작성하지 않고 의도하는 배포를 설명합니다. Bicep은 애플리케이션 코드처럼 처리되는 선언형 구문을 사용합니다. ARM 템플릿(Azure Resource Manager 템플릿)을 작성하는 JSON 구문에 대한 지식이 있는 경우 Bicep에서 보다 간결한 구문과 향상된 형식 안전성을 제공하는 것을 알 수 있습니다. 실제로 Bicep 파일은 표준 ARM 템플릿으로 컴파일됩니다.

필수 구성 요소

Azure 계정

시작하기 전에 활성 구독이 포함된 Azure 계정이 있어야 합니다. Azure 계정이 없는 경우 무료로 등록하고 종량제 구독에 등록합니다.

편집기

ARM 또는 Bicep 템플릿을 만들려면 적절한 편집기가 필요합니다. Resource Manager 도구 확장이 있는 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 Storage 계정: 양자 작업에 대한 입력 및 출력 데이터를 저장하기 위한 스토리지 계정입니다.
  • 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 Portal에서 리소스 그룹을 탐색하여 배포를 확인할 수 있습니다.

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 메뉴에서 리소스 그룹을 선택합니다.

  3. 마지막 절차에서 리소스 그룹 배포를 선택합니다. 기본 이름은 myResourceGroup입니다. 리소스 그룹 내에 배포된 두 개의 리소스(스토리지 계정 및 양자 작업 영역)가 표시됩니다.

  4. 양자 작업 영역에 스토리지 계정에 필요한 액세스 권한이 있는지 확인합니다. 저장소 계정을 선택합니다. 왼쪽 메뉴 창에서 IAM(액세스 제어)을 선택하고 역할 할당에서 양자 작업 영역 리소스가 기여자 아래에 나열되어 있는지 확인합니다.

리소스 정리

양자 작업 영역이 더 이상 필요하지 않은 경우 리소스 그룹을 삭제할 수 있습니다.

az group delete --name myResourceGroup

다음 단계

이제 작업 영역을 만들고 삭제할 수 있으므로 Azure Quantum에서 양자 알고리즘을 실행하는 다양한targets 방법을 알아봅니다. 이제 Azure Pipelines 또는 GitHub 작업 내에서 작업 영역 배포를 수행할 수 있는 도구도 있습니다.