Partage via


Utiliser Azure CLI pour exporter un modèle

Pour faciliter la création de modèles Azure Resource Manager, vous pouvez exporter un modèle à partir de ressources existantes en tant que fichier Bicep ou modèle ARM JSON. Le modèle exporté vous aide à comprendre la syntaxe et les propriétés nécessaires au déploiement de ressources. Pour simplifier les déploiements futurs, utilisez le modèle exporté comme point de départ et personnalisez-le pour vos besoins. Bien que le processus d’exportation génère un modèle fonctionnel, la plupart des modèles exportés nécessitent des ajustements avant de pouvoir être utilisés pour le déploiement.

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 explique 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 prend en charge l’exportation uniquement de modèles JSON ARM. Il récupère une copie exacte du modèle utilisé pour le déploiement, ce qui vous permet de sélectionner un déploiement spécifique à partir de l’historique de déploiement. Après l’exportation, vous pouvez les décomposer dans des fichiers Bicep.

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 les paramètres Include 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. Il est préférable de créer des ressources à partir de zéro à l’aide d’un fichier Bicep écrit manuellement, d’un modèle ARM ou d’un terraform.

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 du modèle 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 l’exportation des ressources Data Factory, consultez Copier ou cloner une fabrique de données dans Azure Data Factory.

Pour exporter des ressources créées via un modèle de déploiement classique, vous devez les migrer vers le modèle de déploiement 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 de ressource, consultez la référence du modèle. 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 de l’aide sur l’obtention du nom d’un déploiement, consultez Afficher l’historique des déploiements 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