Sviluppare modelli per l'hub di Azure Stack con Azure Resource Manager
Quando si sviluppa l'app, è importante avere la portabilità dei modelli tra Azure e l'hub di Azure Stack. Questo articolo fornisce considerazioni per lo sviluppo di modelli di azure Resource Manager. Con questi modelli, è possibile creare un prototipo dell'app e testare la distribuzione in Azure senza accedere a un ambiente hub di Azure Stack.
Disponibilità del provider di risorse
Il modello che si prevede di distribuire deve usare solo i servizi di Microsoft Azure già disponibili o in anteprima nell'hub di Azure Stack.
Spazi dei nomi pubblici
Poiché l'hub di Azure Stack è ospitato nel data center, ha spazi dei nomi degli endpoint di servizio diversi rispetto al cloud pubblico di Azure. Di conseguenza, gli endpoint pubblici hardcoded in Azure Resource Manager modelli hanno esito negativo quando si tenta di distribuirli nell'hub di Azure Stack. È possibile compilare in modo dinamico gli endpoint di servizio usando le reference
funzioni e concatenate
per recuperare i valori dal provider di risorse durante la distribuzione. Ad esempio, anziché impostare come hardcoded blob.core.windows.net
nel modello, recuperare il file primaryEndpoints.blob per impostare in modo dinamico l'endpoint 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')]"}}
Controllo delle versioni API
Le versioni del servizio di Azure possono variare tra Azure e l'hub di Azure Stack. Ogni risorsa richiede l'attributo apiVersion , che definisce le funzionalità offerte. Per garantire la compatibilità delle versioni dell'API nell'hub di Azure Stack, le versioni API seguenti sono valide per ogni provider di risorse:
Provider di risorse | apiVersion |
---|---|
Calcolo | 2015-06-15 |
Rete | 2015-06-15, 2015-05-01-preview |
Archiviazione | 2016-01-01, 2015-06-15, 2015-05-01-preview |
Insieme di credenziali delle chiavi | 2015-06-01 |
Servizio app | 2015-08-01 |
Funzioni di modello
Le funzioni di Azure Resource Manager offrono le funzionalità necessarie per creare modelli dinamici. Ad esempio, è possibile usare funzioni per attività quali:
- Concatenazione o taglio di stringhe.
- Riferimento ai valori di altre risorse.
- Iterazione sulle risorse per distribuire più istanze.
Queste funzioni non sono disponibili nell'hub di Azure Stack:
- Ignora
- Take
Posizione risorsa
I modelli di Azure Resource Manager usano un location
attributo per inserire le risorse durante la distribuzione. In Azure le località fanno riferimento a un'area, ad esempio Stati Uniti occidentali o Sud America. Nell'hub di Azure Stack le posizioni sono diverse perché l'hub di Azure Stack si trova nel data center. Per assicurarsi che i modelli siano trasferibili tra Azure e l'hub di Azure Stack, è necessario fare riferimento alla posizione del gruppo di risorse durante la distribuzione di singole risorse. A tale scopo [resourceGroup().Location]
, è possibile assicurarsi che tutte le risorse ereditino il percorso del gruppo di risorse. Il codice seguente è un esempio di utilizzo di questa funzione durante la distribuzione di un account di archiviazione:
"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"
}
}
]