Décrire Azure Resource Manager et les modèles Azure ARM

Effectué

Azure Resource Manager (ARM) est le service de déploiement et de gestion d’Azure. Il fournit une couche de gestion qui vous permet de créer, de mettre à jour et de supprimer des ressources dans votre compte Azure. À chaque fois que vous effectuez une action avec vos ressources Azure, ARM est impliqué.

Lorsqu’un utilisateur envoie une demande depuis l’un des outils Azure, d’une API ou d’un SDK Azure, c’est ARM qui la reçoit. ARM authentifie et autorise la requête. Ensuite, ARM envoie la demande au service Azure qui effectue l’action demandée. Vous obtenez des résultats et des fonctionnalités cohérents dans tous les outils différents car toutes les demandes sont gérées via la même API.

Avantages d’Azure Resource Manager

Azure Resource Manager vous permet d’effectuer les opérations suivantes :

  • Gérer votre infrastructure à l’aide de modèles déclaratifs plutôt que de scripts Un modèle Resource Manager est un fichier JSON qui définit ce que vous voulez déployer sur Azure.
  • Déployer, gérer et superviser toutes les ressources de votre solution sous forme de groupe, plutôt que de gérer ces ressources individuellement.
  • Vous pouvez redéployer votre solution tout au long du cycle de vie de développement et avoir la certitude que vos ressources sont déployées dans un état cohérent.
  • Vous pouvez définir les dépendances entre les ressources pour qu’elles soient déployées dans le bon ordre.
  • Appliquez le contrôle d’accès à tous les services, car le contrôle d’accès en fonction du rôle (RBAC) est intégré à la plateforme de gestion.
  • Appliquer des étiquettes aux ressources pour organiser de manière logique toutes les ressources de votre abonnement
  • Clarifiez la facturation de votre organisation en affichant les coûts d’un groupe de ressources qui partagent une même étiquette.

La vidéo suivante fournit une vue d’ensemble d’Azure Resource Manager.

Infrastructure as code

Le concept Infrastructure as code vous permet de gérer votre infrastructure sous forme de lignes de code. Au niveau de l’introduction, il s’agit d’utiliser Azure Cloud Shell, Azure PowerShell ou Azure CLI pour gérer et configurer vos ressources. À mesure que vous vous familiarisez au cloud, vous pouvez utiliser le concept d’infrastructure en tant que code pour gérer des déploiements entiers à l’aide de modèles et de configurations reproductibles. Les modèles ARM et Bicep sont deux exemples d’utilisation de l’infrastructure en tant que code avec azure Resource Manager pour entretenir votre environnement.

Modèles ARM

Les modèles ARM vous permettent de décrire les ressources que vous voulez utiliser dans un format JSON déclaratif. Avec un modèle ARM, le code de déploiement est vérifié avant toute exécution. Cela garantit que les ressources seront créées et connectées correctement. Le modèle orchestre ensuite la création de ces ressources en parallèle. Autrement dit, si vous avez besoin de 50 instances de la même ressource, toutes les 50 instances sont créées en même temps.

En définitive, les développeurs et les professionnels du DevOps ou de l’informatique n’a besoin de définir que l’état et la configuration souhaités de chaque ressource dans le modèle ARM, et le modèle s’occupe du reste. Les modèles peuvent même exécuter des scripts PowerShell et Bash avant ou après l’installation de la ressource.

Avantages de l’utilisation des modèles ARM

Les modèles ARM offrent de nombreux avantages lors de la planification du déploiement de ressources Azure. En voici quelques-uns :

  • Syntaxe déclarative : Les modèles Resource Manager vous permettent de créer et de déployer une infrastructure Azure entière de façon déclarative. La syntaxe déclarative signifie que vous déclarez ce que vous voulez déployer, mais que vous n’avez pas besoin d’écrire les commandes de programmation et la séquence réelles pour déployer les ressources.
  • Résultats reproductibles : Déployez votre infrastructure à plusieurs reprises tout au long du cycle de vie de développement. et soyez confiant que vos ressources sont déployées de manière cohérente. Vous pouvez utiliser le même modèle ARM pour déployer plusieurs environnements de développement/test, en sachant que tous les environnements sont identiques.
  • Orchestration : Vous n’avez pas à vous soucier de la complexité de l’ordre des opérations. Azure Resource Manager orchestre le déploiement de ressources interdépendantes afin qu’elles soient créées dans l’ordre approprié. Quand cela est possible, Azure Resource Manager déploie les ressources en parallèle afin que vos déploiements se terminent plus rapidement que les déploiements en série. Vous déployez le modèle par le biais d’une seule commande, plutôt que de plusieurs commandes impératives.
  • Fichiers modulaires : Vous pouvez diviser vos modèles en composants plus petits et réutilisables et les lier au moment du déploiement. Vous pouvez également imbriquer un modèle à l’intérieur d’un autre modèle. Par exemple, vous pouvez créer un modèle pour une pile de machines virtuelles, puis imbriquer ce modèle à l’intérieur de modèles qui déploient des environnements entiers, et cette pile VM sera systématiquement déployée dans chacun des modèles d’environnement.
  • Extensibilité : Avec les scripts de déploiement, vous pouvez ajouter des scripts PowerShell ou Bash à vos modèles. Les scripts de déploiement étendent votre capacité à configurer des ressources pendant le déploiement. Un script peut être inclus dans le modèle ou bien stocké dans une source externe et référencé dans le modèle. Les scripts de déploiement vous permettent de compléter votre configuration d’environnement de bout en bout dans un seul modèle ARM.

Bicep

Bicep est un langage utilisant la syntaxe déclarative pour déployer des ressources Azure. Un fichier Bicep définit l’infrastructure et la configuration. Ensuite, ARM déploie cet environnement selon votre fichier Bicep. Bien que similaires à un modèle ARM écrit en JSON, les fichiers Bicep utilisent en général un style plus simple et plus concis.

Voici quelques avantages à utiliser Bicep :

  • Support pour tous les types de ressources et versions d’API : Bicep prend immédiatement en charge toutes les versions de préversion et de disponibilité générale (GA) pour les services Azure. Dès qu’un fournisseur de ressources introduit de nouveaux types de ressources et de versions d’API, vous pouvez les utiliser dans votre fichier Bicep. Vous ne devez pas attendre la mise à jour des outils avant d’utiliser les nouveaux services.
  • Syntaxe simple : par rapport au modèle JSON équivalent, les fichiers Bicep sont plus concis et plus faciles à lire. Bicep ne nécessite aucune connaissance préalable des langages de programmation. La syntaxe Bicep est déclarative et spécifie les ressources et les propriétés de ressource que vous souhaitez déployer.
  • Résultats reproductibles : Déployez votre infrastructure à plusieurs reprises tout au long du cycle de vie de développement. Vous avez ainsi l’assurance que vos ressources sont déployées de façon cohérente. Les fichiers Bicep sont idempotents, ce qui signifie que vous pouvez déployer le même fichier plusieurs fois et obtenir les mêmes types de ressources dans le même état. Vous pouvez développer un fichier qui représente l’état souhaité, plutôt que de développer un grand nombre de fichiers distincts pour représenter des mises à jour.
  • Orchestration : Vous n’avez pas à vous soucier de la complexité des opérations de commande. Resource Manager orchestre le déploiement de ressources interdépendantes afin qu’elles soient créées dans l’ordre approprié. Lorsque cela est possible, Resource Manager déploie des ressources en parallèle afin que vos déploiements se terminent plus rapidement que les déploiements en série. Vous déployez le fichier par le biais d’une seule commande, plutôt que par le biais de plusieurs commandes impératives.
  • Modularité : vous pouvez diviser votre code Bicep en portions gérables à l’aide de modules. Le module déploie un ensemble de ressources associées. Les modules vous permettent de réutiliser le code et de simplifier le développement. Ajoutez le module à un fichier Bicep chaque fois que vous devez déployer ces ressources.