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 ARM) lub szablonu Bicep do tworzenia obszarów roboczych usługi Azure Quantum oraz wymaganych grup zasobów i kont przechowywania. Po wdrożeniu szablonu możesz rozpocząć uruchamianie aplikacji kwantowych w usłudze Azure Quantum. Traktowanie infrastruktury jako kodu umożliwia śledzenie zmian wymagań dotyczących infrastruktury i sprawia, że wdrożenia są bardziej spójne i powtarzalne.

Szablon usługi ARM to plik w formacie JavaScript Object Notation (JSON) definiujący infrastrukturę i konfigurację projektu. Szablon używa składni deklaratywnej. W składni deklaratywnej opisano zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia. Bicep używa składni deklaratywnej, którą traktujesz jak kod aplikacji. Jeśli znasz składnię JSON do pisania szablonów usługi Azure Resource Manager (szablonów usługi ARM), przekonasz się, że Bicep zapewnia bardziej zwięzłą składnię i ulepszone bezpieczeństwo typów. W rzeczywistości pliki języka Bicep są kompilowane do standardowych szablonów 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 wybierz subskrypcję typu "płać za użycie".

Redaktor

Aby utworzyć szablony ARM lub Bicep, potrzebujesz dobrego edytora. Zalecamy Visual Studio Code z rozszerzeniem Narzędzia Menedżera Zasobów. Jeśli musisz zainstalować te narzędzia, zobacz dokumentację Szybki Start: Tworzenie szablonów ARM przy użyciu programu Visual Studio Code.

Wdrażanie z wiersza poleceń

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

Zaloguj się na platformie Azure

Po zainstalowaniu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure upewnij się, że logujesz się po raz pierwszy. Wybierz jedną z poniższych kart i uruchom odpowiednie polecenia do wiersza poleceń, aby zalogować się do Azure.

az login

Jeśli masz wiele subskrypcji platformy Azure, wybierz subskrypcję, której chcesz użyć. Zastąp SubscriptionName 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ć obszar roboczy kwantowy ze skojarzonymi 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ądanie 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

Następujące zasoby platformy Azure są tworzone przez oba szablony:

Szablony również nadają obszarowi roboczemu kwantowemu uprawnienia współautorado konta magazynowania. Ten krok jest wymagany, aby obszar roboczy mógł odczytywać i zapisywać dane zadań.

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 gospodaruje obszarem roboczym.
  • Identyfikator dzierżawcy powiązany z poświadczeniami używanymi podczas wdrażania.

Wdrażanie szablonu

Aby wdrożyć szablon, użyj interfejsu wiersza polecenia platformy Azure lub programu 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} i nawiasy klamrowe {} ścieżką do pliku szablonu. Ponadto zastąp {provide-app-name} 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. Poszukaj ProvisioningState, aby sprawdzić, 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). Przyczyną tego jest to, że główna jednostka obszaru roboczego nie została jeszcze utworzona, kiedy menedżer zasobów próbował skonfigurować przypisanie roli. Jeśli tak jest, po prostu powtórz wdrożenie. Drugi przebieg powinien zakończyć się powodzeniem.

Weryfikowanie wdrożenia

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

  1. Zaloguj się w witrynie Azure Portal.

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

  3. Wybierz grupę zasobów wdrożoną w ostatniej procedurze. Domyślną nazwą jest myResourceGroup. Powinny zostać wyświetlone dwa zasoby wdrożone w grupie zasobów — konto magazynowe i pracownia kwantowa.

  4. Sprawdź, czy obszar roboczy kwantowy ma niezbędne prawa dostępu do konta magazynowego. Wybierz konto magazynowe. W okienku menu po lewej stronie wybierz Access Control (IAM) i sprawdź, czy pod Przypisania ról zasób obszaru roboczego kwantowego jest wymieniony jako Contributor.

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 metodach targets uruchamiania algorytmów 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 funkcji GitHub Actions.