Sviluppare modelli per hub Azure Stack con Azure Resource ManagerDevelop templates for Azure Stack Hub with Azure Resource Manager

Quando si sviluppa l'app, è importante avere la portabilità dei modelli tra Azure e l'hub Azure Stack.As you develop your app, it is important to have template portability between Azure and Azure Stack Hub. Questo articolo fornisce considerazioni per lo sviluppo di modelli di Azure Resource Manager.This article provides considerations for developing Azure Resource Manager templates. Con questi modelli, è possibile prototipare l'app e testare la distribuzione in Azure senza accedere a un ambiente Hub Azure Stack.With these templates, you can prototype your app and test deployment in Azure without access to an Azure Stack Hub environment.

Disponibilità del provider di risorseResource provider availability

Il modello che si intende distribuire deve usare solo Microsoft Azure servizi già disponibili o in anteprima nell'hub Azure Stack.The template you plan to deploy must only use Microsoft Azure services that are already available, or in preview, in Azure Stack Hub.

Spazi dei nomi pubbliciPublic namespaces

Poiché Azure Stack Hub è ospitato nel Data Center, ha spazi dei nomi degli endpoint di servizio diversi rispetto al cloud pubblico di Azure.Because Azure Stack Hub is hosted in your datacenter, it has different service endpoint namespaces than the Azure public cloud. Di conseguenza, gli endpoint pubblici hardcoded nei modelli Azure Resource Manager hanno esito negativo quando si prova a distribuirli nell'hub Azure Stack.As a result, hard-coded public endpoints in Azure Resource Manager templates fail when you try to deploy them to Azure Stack Hub. È possibile compilare in modo dinamico gli endpoint di servizio usando le funzioni reference e concatenate per recuperare i valori dal provider di risorse durante la distribuzione.You can dynamically build service endpoints using the reference and concatenate functions to retrieve values from the resource provider during deployment. Ad esempio, anziché impostare come hardcoded blob.core.windows.net nel modello, recuperare primari. blob per impostare dinamicamente l'endpoint osDisk. Uri :For example, instead of hard-coding blob.core.windows.net in your template, retrieve the primaryEndpoints.blob to dynamically set the osDisk.URI endpoint:

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

Controllo delle versioni APIAPI versioning

Le versioni del servizio Azure possono differire tra Azure e l'hub Azure Stack.Azure service versions may differ between Azure and Azure Stack Hub. Ogni risorsa richiede l'attributo apiVersion , che definisce le funzionalità offerte.Each resource requires the apiVersion attribute, which defines the capabilities offered. Per garantire la compatibilità delle versioni API nell'hub Azure Stack, le versioni API seguenti sono valide per ogni provider di risorse:To ensure API version compatibility in Azure Stack Hub, the following API versions are valid for each resource provider:

Provider di risorseResource Provider apiVersionapiVersion
CalcoloCompute 2015-06-152015-06-15
ReteNetwork 2015-06-15, 2015-05-01-preview2015-06-15, 2015-05-01-preview
ArchiviazioneStorage 2016-01-01, 2015-06-15, 2015-05-01-preview2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVaultKeyVault 2015-06-012015-06-01
Servizio appApp Service 2015-08-012015-08-01

Funzioni di modelliTemplate functions

Azure Resource Manager funzioni forniscono le funzionalità necessarie per la creazione di modelli dinamici.Azure Resource Manager functions provide the capabilities required to build dynamic templates. Ad esempio, è possibile usare funzioni per attività come:As an example, you can use functions for tasks such as:

  • Concatenazione o trimming delle stringhe.Concatenating or trimming strings.
  • Riferimento a valori di altre risorse.Referencing values from other resources.
  • Iterazione delle risorse per la distribuzione di più istanze.Iterating on resources to deploy multiple instances.

Queste funzioni non sono disponibili nell'hub Azure Stack:These functions are not available in Azure Stack Hub:

  • IgnoraSkip
  • TakeTake

Posizione risorsaResource location

Azure Resource Manager modelli utilizzano un attributo location per inserire le risorse durante la distribuzione.Azure Resource Manager templates use a location attribute to place resources during deployment. In Azure le località si riferiscono a un'area, ad esempio Stati Uniti occidentali o Sud America.In Azure, locations refer to a region such as West US or South America. In Azure Stack hub i percorsi sono diversi perché Azure Stack Hub si trova nel Data Center.In Azure Stack Hub, locations are different because Azure Stack Hub is in your datacenter. Per assicurarsi che i modelli siano trasferibili tra Azure e hub Azure Stack, è necessario fare riferimento al percorso del gruppo di risorse durante la distribuzione delle singole risorse.To ensure templates are transferable between Azure and Azure Stack Hub, you should reference the resource group location as you deploy individual resources. Questa operazione può essere eseguita usando [resourceGroup().Location] per assicurarsi che tutte le risorse ereditino il percorso del gruppo di risorse.You can do this using [resourceGroup().Location] to ensure all resources inherit the resource group location. Il codice seguente è un esempio di uso di questa funzione durante la distribuzione di un account di archiviazione:The following code is an example of using this function while deploying a storage account:

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

Passaggi successiviNext steps