Utiliser Azure CLI pour exporter un modèle

Pour aider à créer des modèles Azure Resource Manager, vous pouvez exporter un modèle à partir de ressources existantes. Le modèle exporté vous aide à comprendre la syntaxe JSON et les propriétés qui déploient vos ressources. Pour automatiser les déploiements futurs, commencez par le modèle exporté et modifiez-le en fonction de votre scénario. Le processus d’exportation d’un modèle tente de créer un modèle utilisable. Toutefois, la plupart des modèles exportés nécessitent certaines modifications avant de pouvoir être utilisés pour déployer des ressources Azure.

Resource Manager vous permet de choisir une ou plusieurs ressources pour l’exportation vers un modèle. Vous pouvez vous concentrer exactement sur les ressources dont vous avez besoin dans le modèle.

Cet article montre comment exporter des modèles via Azure CLI. Pour d'autres options, voir :

Choisir la bonne option d’exportation

Il existe deux façons d’exporter un modèle :

  • Exporter à partir d’un groupe de ressources ou d’une ressource. Cette option génère un nouveau modèle à partir de ressources existantes. Le modèle exporté est un « instantané » de l’état actuel du groupe de ressources. Vous pouvez exporter un groupe de ressources complet ou des ressources spécifiques au sein de ce groupe de ressources.

  • Enregistrer à partir de l’historique. Cette option récupère une copie exacte d’un modèle utilisé pour le déploiement. Vous spécifiez le déploiement à partir de l’historique de déploiement.

Selon l’option choisie, les modèles exportés ont différentes qualités.

À partir d’un groupe de ressources ou d’une ressource À partir de l’historique
Le modèle est généré automatiquement. Vous souhaiterez probablement améliorer le code avant de le déployer. Le modèle est une copie exacte de celui créé par l’auteur du modèle. Il est prêt à être redéployé sans aucune modification.
Le modèle est un instantané de l’état actuel des ressources. Il inclut toutes les modifications manuelles apportées après le déploiement. Le modèle affiche uniquement l’état des ressources au moment du déploiement. Toutes les modifications manuelles apportées après le déploiement ne sont pas incluses.
Vous pouvez sélectionner les ressources à exporter à partir d’un groupe de ressources. Toutes les ressources pour un déploiement spécifique sont incluses. Vous ne pouvez pas choisir un sous-ensemble de ces ressources ou ajouter des ressources qui ont été ajoutés à un autre moment.
Le modèle inclut toutes les propriétés des ressources, y compris certaines propriétés que vous ne définiriez normalement pas pendant le déploiement. Vous souhaiterez peut-être supprimer ou nettoyer ces propriétés avant de réutiliser le modèle. Le modèle inclut uniquement les propriétés nécessaires au déploiement. Le modèle est plus éparse et plus facile à lire.
Le modèle probablement n’inclut probablement pas tous les paramètres dont vous avez besoin pour le réutiliser. La plupart des valeurs de propriété sont codées en dur dans le modèle. Pour redéployer le modèle dans d’autres environnements, vous devez ajouter des paramètres qui augmentent la possibilité de configurer les ressources. Vous pouvez désélectionner Inclure des paramètres afin de pouvoir créer vos propres paramètres. Le modèle inclut des paramètres qui permettent de facilement le redéployer dans différents environnements.

Exportez le modèle à partir d’une ressource ou d’un groupe de ressources, lorsque :

  • Vous devez capturer les modifications apportées aux ressources après le déploiement d’origine.
  • Vous devez sélectionner les ressources à exporter.
  • Les ressources n’ont pas été créées avec un modèle.

Exportez le modèle à partir de l’historique dans les cas suivants :

  • Vous souhaitez un modèle facile à réutiliser.
  • Vous n’avez pas besoin d’inclure les modifications apportées après le déploiement d’origine.

Limites

La réussite de l’exportation n’est pas garantie. L’exportation ne constitue pas un moyen efficace de transformer des ressources préexistantes en modèles utilisables en production. La création de ressources à partir de zéro au moyen d’un fichier Bicep écrit à la main, d’un modèle ARM ou terraform est conseillée.

Lors de l’exportation à partir d’un groupe de ressources ou d’une ressource, le modèle exporté est généré à partir des schémas publiés pour chaque type de ressource. Parfois, le schéma ne dispose pas de la dernière version d’un type de ressource. Vérifiez votre modèle exporté pour vous assurer qu’il comprend les propriétés dont vous avez besoin. Si nécessaire, modifiez le modèle exporté pour utiliser la version d’API dont vous avez besoin.

Certains paramètres de mot de passe peuvent être manquants dans les modèles exportés. Vous devez vérifier la référence des modèles et ajouter manuellement ces paramètres avant de pouvoir utiliser les modèles pour déployer des ressources.

La fonctionnalité d’exportation de modèle ne prend pas en charge l’exportation des ressources Azure Data Factory. Pour en savoir plus sur la façon dont vous pouvez exporter des ressources Data Factory, consultez Copier ou cloner une fabrique de données dans Azure Data Factory.

Pour exporter des ressources créées par le biais du modèle de déploiement classique, vous devez les migrer vers le modèle de déploiement de Resource Manager.

Si vous recevez un avertissement lors de l’exportation d’un modèle qui indique qu’un type de ressource n’a pas été exporté, vous pouvez toujours découvrir les propriétés pour cette ressource. Pour connaître les propriétés des ressources, consultez les informations de référence sur les modèles. Vous pouvez également consulter l’API REST Azure pour le type de ressource.

Le groupe de ressources pour lequel vous créez le modèle exporté est limité à 200 ressources. Si vous tentez d’exporter un groupe de ressources contenant plus de 200 ressources, le message d’erreur Export template is not supported for resource groups more than 200 resources s’affiche.

Exportation du modèle à partir d’un groupe de ressources

Après avoir correctement configuré votre groupe de ressources, vous pouvez afficher le modèle Resource Manager correspondant.

Pour exporter toutes les ressources d’un groupe de ressources, utilisez az group export et indiquez le nom du groupe de ressources.

az group export --name demoGroup

Le script affiche le modèle sur la console. Pour enregistrer dans un fichier, utilisez :

az group export --name demoGroup > exportedtemplate.json

Plutôt que d’exporter toutes les ressources dans le groupe de ressources, vous pouvez sélectionner les ressources à exporter.

Pour exporter une ressource, transmettez cet ID de ressource.

storageAccountID=$(az resource show --resource-group demoGroup --name demostg --resource-type Microsoft.Storage/storageAccounts --query id --output tsv)
az group export --resource-group demoGroup --resource-ids $storageAccountID

Pour exporter plusieurs ressources, transmettez les ID de ressource séparés par des espaces. Pour exporter toutes les ressources, ne spécifiez pas cet argument ou indiquez « * ».

az group export --resource-group <resource-group-name> --resource-ids $storageAccountID1 $storageAccountID2

Lorsque vous exportez le modèle, vous pouvez spécifier si des paramètres sont utilisés dans celui-ci. Par défaut, les paramètres des noms de ressource sont inclus, mais ils n’ont pas de valeur par défaut.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "type": "String"
  }
}

Si vous utilisez le paramètre --skip-resource-name-params lors de l’exportation du modèle, les paramètres des noms de ressources ne sont pas inclus dans le modèle. Au lieu de cela, le nom de ressource est défini directement sur la ressource sur sa valeur actuelle. Vous ne pouvez pas personnaliser le nom au cours du déploiement.

"resources": [
  {
    "type": "Microsoft.Web/serverfarms",
    "apiVersion": "2022-09-01",
    "name": "demoHostPlan",
    ...
  }
]

Si vous utilisez le paramètre --include-parameter-default-value lors de l’exportation du modèle, le paramètre de modèle inclut une valeur par défaut qui est définie sur la valeur actuelle. Vous pouvez utiliser cette valeur par défaut ou remplacer la valeur par défaut en transmettant une valeur différente.

"parameters": {
  "serverfarms_demoHostPlan_name": {
    "defaultValue": "demoHostPlan",
    "type": "String"
  },
  "sites_webSite3bwt23ktvdo36_name": {
    "defaultValue": "webSite3bwt23ktvdo36",
    "type": "String"
  }
}

Enregistrer un modèle à partir de l’historique de déploiement

Vous pouvez sauvegarder un modèle à partir d’un déploiement dans l’historique du déploiement. Le modèle que vous obtenez est exactement celui qui a été utilisé pour le déploiement.

Pour obtenir un modèle à partir d'un déploiement de groupe de ressources, utilisez la commande az deployment group export. Vous spécifiez le nom du déploiement à récupérer. Pour obtenir le nom d'un déploiement, consultez la section Afficher l'historique du déploiement avec Azure Resource Manager.

az deployment group export --resource-group demoGroup --name demoDeployment

Le modèle est affiché dans la console. Pour sauvegarder le fichier, utilisez :

az deployment group export --resource-group demoGroup --name demoDeployment > demoDeployment.json

Pour obtenir des modèles déployés à d'autres niveaux, utilisez :

Étapes suivantes