Utveckla mallar för Azure Stack Hub med Azure Resource Manager

När du utvecklar din app är det viktigt att ha mallportabilitet mellan Azure och Azure Stack Hub. Den här artikeln beskriver hur du utvecklar Azure Resource Manager-mallar. Med dessa mallar kan du skapa prototyper för din app och testa distributionen i Azure utan åtkomst till en Azure Stack Hub-miljö.

Tillgänglighet för resursprovider

Mallen som du planerar att distribuera får endast använda Microsoft Azure-tjänster som redan är tillgängliga, eller som förhandsversion, i Azure Stack Hub.

Offentliga namnområden

Eftersom Azure Stack Hub finns i ditt datacenter har det andra namnområden för tjänstslutpunkten än det offentliga Azure-molnet. Därför misslyckas hårdkodade offentliga slutpunkter i Azure Resource Manager mallar när du försöker distribuera dem till Azure Stack Hub. Du kan dynamiskt skapa tjänstslutpunkter med hjälp av reference funktionerna och concatenate för att hämta värden från resursprovidern under distributionen. I stället för hårdkodning blob.core.windows.net i mallen hämtar du till exempel primaryEndpoints.blob för att dynamiskt ange osDisk.URI-slutpunkten :

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

API-versionshantering

Azure-tjänstversionerna kan skilja sig åt mellan Azure och Azure Stack Hub. Varje resurs kräver apiVersion-attributet , som definierar de funktioner som erbjuds. För att säkerställa API-versionskompatibilitet i Azure Stack Hub är följande API-versioner giltiga för varje resursprovider:

Resursprovider apiVersion
Compute 2015-06-15
Nätverk 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

Mallfunktioner

Azure Resource Manager funktioner tillhandahåller de funktioner som krävs för att skapa dynamiska mallar. Du kan till exempel använda funktioner för uppgifter som:

  • Sammanfoga eller trimma strängar.
  • Refererar till värden från andra resurser.
  • Iterera resurser för att distribuera flera instanser.

Dessa funktioner är inte tillgängliga i Azure Stack Hub:

  • Hoppa över
  • Ta

Resursplats

Azure Resource Manager-mallar använder ett location attribut för att placera resurser under distributionen. I Azure refererar platser till en region som USA, västra eller Sydamerika. I Azure Stack Hub är platserna olika eftersom Azure Stack Hub finns i ditt datacenter. För att säkerställa att mallar kan överföras mellan Azure och Azure Stack Hub bör du referera till resursgruppens plats när du distribuerar enskilda resurser. Du kan göra detta med hjälp av [resourceGroup().Location] för att se till att alla resurser ärver resursgruppens plats. Följande kod är ett exempel på hur du använder den här funktionen när du distribuerar ett lagringskonto:

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

Nästa steg