Développer des modèles pour Azure Stack Hub avec Azure Resource Manager

Lorsque vous développez votre application, il est important de garantir la portabilité des modèles entre Azure et Azure Stack Hub. Cet article fournit des informations sur le développement des modèles Azure Resource Manager. Avec ces modèles, vous pouvez créer un prototype de votre d'application et en tester le déploiement dans Azure sans environnement Azure Stack Hub.

Disponibilité du fournisseur de ressources

Le modèle que vous envisagez de déployer doit seulement utiliser les services Microsoft Azure déjà disponibles, ou en préversion, dans Azure Stack Hub.

Espaces de noms publics

Comme Azure Stack Hub est hébergé dans votre centre de données, il dispose d'espaces de noms de point de terminaison de service différents de ceux du cloud public Azure. Par conséquent, les points de terminaison publics codés en dur dans les modèles Azure Resource Manager échouent lorsque vous essayez de les déployer sur Azure Stack Hub. Vous pouvez générer dynamiquement des points de terminaison de service à l’aide des fonctions de reference et concatenate pour récupérer des valeurs à partir du fournisseur de ressources lors du déploiement. Par exemple, au lieu de coder en dur blob.core.windows.net dans votre modèle, récupérez l’objet primaryEndpoints.blob pour définir dynamiquement le point de terminaison 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')]"}}

Contrôle de version d’API

Les versions du service Azure peuvent différer entre Azure et Azure Stack Hub. Chaque ressource requiert l’attribut apiVersion, qui définit les fonctionnalités proposées. Pour assurer la compatibilité des versions d'API dans Azure Stack Hub, les versions suivantes sont valides pour chaque fournisseur de ressources :

Fournisseur de ressources apiVersion
Compute 2015-06-15
Réseau 2015-06-15, 2015-05-01-preview
Stockage 2016-01-01, 2015-06-15, 2015-05-01-preview
KeyVault 2015-06-01
App Service 2015-08-01

Fonctions des modèles de gestionnaire des ressources Azure

Les fonctions Azure Resource Manager offrent les fonctionnalités nécessaires pour créer des modèles dynamiques. Par exemple, vous pouvez utiliser des fonctions pour des tâches telles que :

  • La concaténation ou la troncation de chaînes.
  • Le référencement de valeurs d’autres ressources.
  • L’itération sur les ressources pour déployer plusieurs instances.

Ces fonctions ne sont pas disponibles dans Azure Stack Hub :

  • Ignorer
  • Take

Emplacement de la ressource

Les modèles Azure Resource Manager utilisent un attribut location pour placer les ressources pendant le déploiement. Dans Azure, les emplacements font référence à une région, par exemple USA Ouest ou Amérique du Sud. Dans Azure Stack Hub, les emplacements sont différents, car Azure Stack Hub se trouve dans votre centre de données. Pour que les modèles soient transférables entre Azure et Azure Stack Hub, vous devez référencer l'emplacement du groupe de ressources lorsque vous déployez des ressources individuelles. Vous pouvez pour cela utiliser [resourceGroup().Location] afin de veiller à ce que toutes les ressources héritent de l’emplacement du groupe de ressources. Le code suivant est un exemple d’utilisation de cette fonction lors du déploiement d’un compte de stockage :

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

Étapes suivantes