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