Udostępnij za pośrednictwem


Zarządzanie obszarami roboczymi kwantowymi za pomocą usługi Azure Resource Manager

W tym przewodniku dowiesz się, jak używać szablonu usługi Azure Resource Manager (szablonu usługi ARM) lub szablonu Bicep do tworzenia obszarów roboczych usługi Azure Quantum oraz wymaganych grup zasobów i kont magazynu. Po wdrożeniu szablonu możesz rozpocząć uruchamianie aplikacji kwantowych w usłudze Azure Quantum. Potraktowanie infrastruktury jako kodu umożliwia śledzenie zmian w wymaganiach dotyczących infrastruktury i zwiększa spójność oraz powtarzalność wdrożeń.

Szablon usługi ARM to plik w formacie JavaScript Object Notation (JSON) definiujący infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. W składni deklaratywnej opisujesz rozwiązanie, które chcesz wdrożyć, bez konieczności pisania sekwencji poleceń programistycznych służących do tworzenia takiego wdrożenia. Język Bicep używa deklaratywnej składni, która jest traktowana jak kod aplikacji. Jeśli znasz składnię JSON do pisania szablonów usługi Azure Resource Manager (szablonów arm), przekonasz się, że Bicep zapewnia bardziej zwięzłą składnię i lepsze bezpieczeństwo typów. W rzeczywistości pliki języka Bicep są kompilowane do standardowych szablonów usługi ARM.

Wymagania wstępne

Konto platformy Azure

Przed rozpoczęciem musisz mieć konto platformy Azure z aktywną subskrypcją. Jeśli nie masz konta platformy Azure, zarejestruj się bezpłatnie i zarejestruj się w celu korzystania z subskrypcji z płatnością zgodnie z rzeczywistym użyciem.

Edytor

Aby utworzyć szablony usługi ARM lub Bicep, potrzebujesz dobrego edytora. Zalecamy Visual Studio Code z rozszerzeniem Resource Manager Tools. Jeśli musisz zainstalować te narzędzia, zobacz Szybki start: tworzenie szablonów usługi ARM przy użyciu Visual Studio Code.

Wdrażanie wiersza polecenia

Do wdrożenia szablonu potrzebne są również Azure PowerShell lub interfejs wiersza polecenia platformy Azure. Jeśli używasz interfejsu wiersza polecenia platformy Azure, musisz mieć najnowszą wersję. Aby uzyskać instrukcje instalacji, zobacz:

Logowanie do platformy Azure

Po zainstalowaniu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure upewnij się, że logujesz się po raz pierwszy. Wybierz jedną z następujących kart i uruchom odpowiednie polecenia wiersza polecenia, aby zalogować się na platformie Azure:

az login

Jeśli masz wiele subskrypcji platformy Azure, wybierz subskrypcję, której chcesz użyć. Zastąp SubscriptionName ciąg nazwą subskrypcji. Możesz również użyć identyfikatora subskrypcji zamiast nazwy subskrypcji.

az account set --subscription SubscriptionName

Tworzenie pustej grupy zasobów

Podczas wdrażania szablonu należy określić grupę zasobów, która będzie zawierać kwantowy obszar roboczy ze skojarzonymi z nim zasobami. Przed uruchomieniem polecenia wdrożenia utwórz grupę zasobów przy użyciu interfejsu wiersza polecenia platformy Azure lub usługi Azure PowerShell.

az group create --name myResourceGroup --location "East US"

Przegląd szablonu

@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

Oba szablony tworzą następujące zasoby platformy Azure:

Szablony zapewniają również uprawnienia współautora obszaru roboczego kwantowego do konta magazynu. Ten krok jest wymagany, aby obszar roboczy mógł odczytywać i zapisywać dane zadania.

Oba szablony generują następujące dane wyjściowe. Te wartości można później użyć do zidentyfikowania wygenerowanego obszaru roboczego kwantowego i uwierzytelnienia w nim:

  • Identyfikator subskrypcji hostowania wszystkich wdrożonych zasobów.
  • Grupa zasobów zawierająca wszystkie wdrożone zasoby.
  • Nazwa obszaru roboczego kwantowego.
  • Lokalizacja centrum danych, które hostuje obszar roboczy.
  • Identyfikator dzierżawy przechowujący poświadczenia używane we wdrożeniu.

Wdrożenie szablonu

Aby wdrożyć szablon, użyj interfejsu wiersza polecenia platformy Azure lub Azure PowerShell. Użyj utworzonej grupy zasobów. Nadaj nazwę wdrożeniu, aby można je było łatwo zidentyfikować w historii wdrożenia. Zastąp {provide-the-path-to-the-template-file} nawiasy klamrowe {} i ścieżką do pliku szablonu. Ponadto zastąp {provide-app-name} wartości i {provide-location} wartościami dla ogólnej nazwy aplikacji i lokalizacji, w której powinien znajdować się obszar roboczy. Nazwa aplikacji powinna zawierać tylko litery.

Aby uruchomić to polecenie wdrażania, musisz mieć najnowszą wersję interfejsu wiersza polecenia platformy Azure.

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}"

Polecenie wdrożenia zwraca wyniki. ProvisioningState Poszukaj, czy wdrożenie zakończyło się pomyślnie.

Ważne

W niektórych przypadkach może wystąpić błąd wdrożenia (Kod: PrincipalNotFound). Jest to spowodowane tym, że podmiot zabezpieczeń obszaru roboczego nie został jeszcze utworzony, gdy menedżer zasobów próbował skonfigurować przypisanie roli. Jeśli tak jest, po prostu powtórz wdrożenie. Powinno się to powieść w drugim przebiegu.

Weryfikowanie wdrożenia

Wdrożenie można zweryfikować, eksplorując grupę zasobów z Azure Portal.

  1. Zaloguj się w witrynie Azure Portal.

  2. W menu po lewej stronie wybierz pozycję Grupy zasobów.

  3. Wybierz wdrożenie grupy zasobów w ostatniej procedurze. Domyślna nazwa to myResourceGroup. Powinny zostać wyświetlone dwa zasoby wdrożone w grupie zasobów — konto magazynu i kwantowy obszar roboczy.

  4. Sprawdź, czy obszar roboczy kwantowy ma niezbędne prawa dostępu dla konta magazynu. Wybierz konto magazynu. W okienku menu po lewej stronie wybierz pozycję Access Control (zarządzanie dostępem i tożsamościami) i sprawdź, czy w obszarze Przypisania ról w obszarze Współautor znajduje się zasób obszaru roboczego kwantowego.

Czyszczenie zasobów

Jeśli nie potrzebujesz już obszaru roboczego kwantowego, możesz usunąć grupę zasobów.

az group delete --name myResourceGroup

Następne kroki

Teraz, gdy możesz tworzyć i usuwać obszary robocze, dowiedz się więcej o różnych targets algorytmach kwantowych w usłudze Azure Quantum. Teraz masz również narzędzia do wykonywania wdrożeń obszarów roboczych z poziomu usługi Azure Pipelines lub GitHub Actions.