Sjablonen ontwikkelen voor Azure Stack Hub met Azure Resource Manager

Bij het ontwikkelen van uw app is het belangrijk om sjabloonportabiliteit te hebben tussen Azure en Azure Stack Hub. Dit artikel bevat overwegingen voor het ontwikkelen van Azure Resource Manager-sjablonen. Met deze sjablonen kunt u een prototype van uw app maken en de implementatie in Azure testen zonder toegang tot een Azure Stack Hub-omgeving.

Beschikbaarheid van resourceprovider

De sjabloon die u wilt implementeren, mag alleen gebruikmaken van Microsoft Azure-services die al beschikbaar zijn of in preview zijn in Azure Stack Hub.

Openbare naamruimten

Omdat Azure Stack Hub wordt gehost in uw datacenter, heeft het andere naamruimten voor service-eindpunten dan de openbare Cloud van Azure. Als gevolg hiervan mislukken in code vastgelegde openbare eindpunten in Azure Resource Manager-sjablonen wanneer u ze probeert te implementeren in Azure Stack Hub. U kunt dynamisch service-eindpunten bouwen met behulp van de reference functies en concatenate om waarden op te halen van de resourceprovider tijdens de implementatie. Haal bijvoorbeeld in plaats van hard-coding blob.core.windows.net in uw sjabloon de primaryEndpoints.blob op om het osDisk.URI-eindpunt dynamisch in te stellen:

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

API-versiebeheer

Azure-serviceversies kunnen verschillen tussen Azure en Azure Stack Hub. Voor elke resource is het kenmerk apiVersion vereist, waarmee de aangeboden mogelijkheden worden gedefinieerd. Om compatibiliteit van API-versies in Azure Stack Hub te garanderen, zijn de volgende API-versies geldig voor elke resourceprovider:

Resourceprovider apiVersion
Compute 2015-06-15
Netwerk 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

Sjabloonfuncties

Azure Resource Manager-functies bieden de mogelijkheden die nodig zijn om dynamische sjablonen te bouwen. U kunt bijvoorbeeld functies gebruiken voor taken zoals:

  • Tekenreeksen samenvoegen of inkorten.
  • Verwijzen naar waarden uit andere resources.
  • Herhalen op resources om meerdere exemplaren te implementeren.

Deze functies zijn niet beschikbaar in Azure Stack Hub:

  • Overslaan
  • Take

Resourcelocatie

Azure Resource Manager-sjablonen gebruiken een location kenmerk om resources te plaatsen tijdens de implementatie. In Azure verwijzen locaties naar een regio zoals VS - west of Zuid-Amerika. In Azure Stack Hub zijn locaties verschillend omdat Azure Stack Hub zich in uw datacenter bevindt. Om ervoor te zorgen dat sjablonen overdraagbaar zijn tussen Azure en Azure Stack Hub, moet u tijdens het implementeren van afzonderlijke resources verwijzen naar de locatie van de resourcegroep. U kunt dit doen door [resourceGroup().Location] ervoor te zorgen dat alle resources de locatie van de resourcegroep overnemen. De volgende code is een voorbeeld van het gebruik van deze functie tijdens het implementeren van een opslagaccount:

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

Volgende stappen