Tworzenie szablonów dla usługi Azure Stack Hub przy użyciu usługi Azure Resource Manager

Podczas opracowywania aplikacji ważne jest, aby przenośność szablonu między platformą Azure i usługą Azure Stack Hub. Ten artykuł zawiera zagadnienia dotyczące tworzenia szablonów usługi Azure Resource Manager. Za pomocą tych szablonów można prototypować aplikację i testować wdrożenie na platformie Azure bez dostępu do środowiska usługi Azure Stack Hub.

Dostępność dostawcy zasobów

Szablon, który chcesz wdrożyć, musi używać tylko usług platformy Microsoft Azure, które są już dostępne lub w wersji zapoznawczej, w usłudze Azure Stack Hub.

Publiczne przestrzenie nazw

Ponieważ usługa Azure Stack Hub jest hostowana w centrum danych, ma inne przestrzenie nazw punktu końcowego usługi niż chmura publiczna platformy Azure. W związku z tym zakodowane publiczne punkty końcowe w szablonach usługi Azure Resource Manager kończą się niepowodzeniem podczas próby wdrożenia ich w usłudze Azure Stack Hub. Punkty końcowe usługi można dynamicznie tworzyć przy użyciu reference funkcji i concatenate , aby pobierać wartości od dostawcy zasobów podczas wdrażania. Na przykład zamiast kodowania na stałe blob.core.windows.net w szablonie pobierz obiekt primaryEndpoints.blob , aby dynamicznie ustawić punkt końcowy osDisk.URI :

"osDisk": {"name": "osdisk","vhd": {"uri":
"[concat(reference(concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName')), '2015-06-15').primaryEndpoints.blob, variables('vmStorageAccountContainerName'),
 '/',variables('OSDiskName'),'.vhd')]"}}

Przechowywanie wersji interfejsu API

Wersje usług platformy Azure mogą się różnić między platformą Azure i usługą Azure Stack Hub. Każdy zasób wymaga atrybutu apiVersion , który definiuje oferowane możliwości. Aby zapewnić zgodność wersji interfejsu API w usłudze Azure Stack Hub, następujące wersje interfejsu API są prawidłowe dla każdego dostawcy zasobów:

Dostawca zasobów apiVersion
Compute 2015-06-15
Sieć 2015-06-15, 2015-05-01-preview
Storage 2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVault 2015-06-01
App Service 2015-08-01

Funkcje szablonów

Funkcje usługi Azure Resource Manager zapewniają możliwości wymagane do tworzenia szablonów dynamicznych. Na przykład można użyć funkcji do wykonywania zadań, takich jak:

  • Łączenie lub przycinanie ciągów.
  • Odwoływanie się do wartości z innych zasobów.
  • Iterowanie zasobów w celu wdrożenia wielu wystąpień.

Te funkcje nie są dostępne w usłudze Azure Stack Hub:

  • Pomiń
  • Take

Lokalizacja zasobu

Szablony usługi Azure Resource Manager używają atrybutu do umieszczania location zasobów podczas wdrażania. Na platformie Azure lokalizacje odnoszą się do regionu, takiego jak Zachodnie stany USA lub Ameryka Południowa. W usłudze Azure Stack Hub lokalizacje są różne, ponieważ usługa Azure Stack Hub znajduje się w centrum danych. Aby upewnić się, że szablony można przenosić między platformą Azure i usługą Azure Stack Hub, należy odwołać się do lokalizacji grupy zasobów podczas wdrażania poszczególnych zasobów. Można to zrobić za pomocą [resourceGroup().Location] polecenia , aby upewnić się, że wszystkie zasoby dziedziczą lokalizację grupy zasobów. Poniższy kod jest przykładem użycia tej funkcji podczas wdrażania konta magazynu:

"resources": [
{
  "name": "[variables('storageAccountName')]",
  "type": "Microsoft.Storage/storageAccounts",
  "apiVersion": "[variables('apiVersionStorage')]",
  "location": "[resourceGroup().location]",
  "comments": "This storage account is used to store the VM disks",
  "properties": {
  "accountType": "Standard_LRS"
  }
}
]

Następne kroki