Module Terraform des zones d’atterrissage Azure
Azure fournit des services natifs pour la création de zones d’atterrissage Azure. D’autres outils peuvent également vous aider dans cet effort. L’un de ces outils, Terraform de HashiCorp, est fréquemment utilisé par les clients et les partenaires pour déployer des zones d’atterrissage.
Le déploiement de ressources dans les zones d’atterrissage d’application ne relève pas du module. Les décisions concernant la méthode de déploiement et les outils à utiliser appartiennent à l’équipe en charge de l’application.
Le module Terraform pour zones d’atterrissage Azure permet d’implémenter rapidement les ressources de plateforme dont vous avez besoin pour gérer des zones d’atterrissage Azure à grande échelle avec Terraform. Le module est conçu pour simplifier le déploiement de la hiérarchie des groupes d’administration, des stratégies et des ressources dans les abonnements de connectivité et de gestion.
Prérequis
Si vous êtes novice avec Terraform et que vous voulez des informations sur son installation et son utilisation, consultez le tutoriel sur HashiCorp Learn.
Pour plus d’informations sur la configuration du fournisseur Terraform et l’authentification avec Azure, consultez les guides sur le site de Terraform. Pour en savoir plus sur la configuration du fournisseur en vue d’un déploiement sur plusieurs abonnements, consultez la page Wiki consacrée à la .
Importance de l’utilisation de modules standard
La réutilisation des composants est un principe fondamental de l’infrastructure en tant que code. Les modules jouent un rôle déterminant dans la définition des normes et la cohérence du déploiement des ressources à l’échelle de chaque environnement.
Le module Terraform pour zones d’atterrissage Azure est publié dans le Registre Terraform officiel et vérifié par HashiCorp.
Le déploiement du module à partir du Registre Terraform permet les éléments suivants :
- Livraison accélérée des zones d’atterrissage Azure dans votre environnement.
- Chemin d’accès de mise à niveau testé vers la dernière version du module, ainsi que la gestion de version stricte.
Avantages de l’utilisation du module
Les avantages de l’utilisation du module Terraform pour zones d’atterrissage Azure sont les suivants :
- Hiérarchie de ressources de base managées et extensibles pour l’organisation des abonnements avec des groupes d’administration.
- Modèle de gouvernance et de conformité en matière de sécurité scalable au moyen de contrôles de gestion des identités et des accès (IAM) Azure, avec une vaste bibliothèque de définitions personnalisées prêtes à être affectées.
- Application de la stratégie au niveau des abonnements par le biais de l’héritage du groupe d’administration.
- Ressources managées pour les zones d’atterrissage de gestion et de connectivité. Ces ressources fournissent les éléments suivants :
- La garantie de la conformité à la stratégie, grâce à l’intégration étroite des ressources gérées par le module et des affectations de stratégie correspondantes.
- L’intégration entre les ressources, ce qui réduit la charge de gestion et fournit une expérience utilisateur améliorée, comme la création automatique de liens de réseau virtuel pour Azure Private DNS.
Conseil
La bibliothèque de modèles est mise à jour par programmation à partir du dépôt GitHub Azure/Enterprise-Scale. Pour bénéficier des dernières nouveautés concernant les rôles, les stratégies et la configuration d’archétype, veillez à utiliser la dernière version du module.
Déploiement de ressources
Vous pouvez configurer le module pour déployer des ensembles de ressources qui s’alignent sur les zones de conception critiques suivantes dans les zones d’atterrissage Azure. Personnalisez ces ressources pour répondre aux besoins de votre organisation.
Catégorie de ressource | Zones de conception critiques |
---|---|
Ressources de base | Organisation des ressources Sécurité Gouvernance |
Ressources de gestion | Gestion et monitoring |
Ressources de connectivité | Topologie de réseau et connectivité |
Ressources d’identité | Gestion de l’identité et de l’accès |
En empaquetant ces fonctionnalités dans un module Terraform unique, il devient plus facile de créer et d’appliquer une cohérence dans l’ensemble de la plateforme Azure en cas d’opération à grande échelle.
Ces ressources sont alignées sur l’architecture conceptuelle des zones d’atterrissage Azure :
Vous pouvez déployer ces ressources, par fonctionnalité, sur plusieurs abonnements en utilisant la Configuration du fournisseur sur le bloc de module.
Les sections suivantes définissent les types de ressources et les options de configuration.
Ressources de base
La principale capacité de ce module pose les bases de architecture conceptuelle pour les zones d’atterrissage Azure, avec un focus sur organisation des ressources.
Quand vous activez le déploiement des ressources de base (activé par défaut), le module déploie et gère les types de ressources suivants :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes d’administration | Microsoft.Management/managementGroups |
azurerm_management_group |
Abonnements de groupe d’administration | Microsoft.Management/managementGroups/subscriptions |
azurerm_management_group |
Attributions de stratégies | Microsoft.Authorization/policyAssignments |
azurerm_management_group_policy_assignment |
Définitions de stratégies | Microsoft.Authorization/policyDefinitions |
azurerm_policy_definition |
Définitions d’ensemble de stratégies | Microsoft.Authorization/policySetDefinitions |
azurerm_policy_set_definition |
Affectations de rôles | Microsoft.Authorization/roleAssignments |
azurerm_role_assignment |
Définitions de rôles | Microsoft.Authorization/roleDefinitions |
azurerm_role_definition |
Le nombre exact de ressources créées par le module dépend de sa configuration. Pour une configuration par défaut, vous pouvez vous attendre à ce que le module crée environ 180
ressources.
Conseil
Aucune de ces ressources n’est déployée dans l’étendue de l’abonnement, mais Terraform nécessite toujours un abonnement pour établir une session authentifiée avec Azure. Pour plus d’informations sur l’authentification avec Azure, consultez la documentation Fournisseur Azure : Authentification auprès d’Azure.
Ressources de gestion
Le module fournit une option permettant de déployer des ressources de gestion et de monitoring à partir de l’architecture conceptuelle des zones d’atterrissage Azure dans l’abonnement spécifié, comme décrit dans la page Wiki consacrée à la configuration du fournisseur. Il garantit également que l’abonnement spécifié est placé dans le groupe d’administration approprié.
Quand vous activez le déploiement des ressources de gestion, le module déploie et gère les types de ressources suivants (selon la configuration) :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes de ressources | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Espace de travail Log Analytics | Microsoft.OperationalInsights/workspaces |
azurerm_log_analytics_workspace |
Solutions Log Analytics | Microsoft.OperationsManagement/solutions |
azurerm_log_analytics_solution |
Compte Automation | Microsoft.Automation/automationAccounts |
azurerm_automation_account |
Service lié Log Analytics | Microsoft.OperationalInsights/workspaces /linkedServices |
azurerm_log_analytics_linked_service |
Outre le déploiement des ressources ci-dessus, le module fournit une intégration native aux affectations de stratégie correspondantes pour garantir la conformité totale à la stratégie.
Pour plus d’informations sur l’utilisation de cette fonctionnalité, consultez la page Wiki consacrée au déploiement des ressources de gestion.
Ressources de connectivité
Le module fournit une option permettant de déployer des ressources de topologie de réseau et de connectivité à partir de l’architecture conceptuelle des zones d’atterrissage Azure dans le contexte d’abonnement actuel. Il garantit également que l’abonnement spécifié est placé dans le groupe d’administration approprié.
Cette fonctionnalité permet de déployer plusieurs réseaux hubs en combinant librement la topologie de réseau Azure classique (hub-and-spoke) et la topologie de réseau Virtual WAN (gérée par Microsoft).
Le module peut également créer un plan Protection Réseau DDoS et le lier à des réseaux virtuels, et gérer les zones DNS publiques et privées centralisées.
Notes
Nous ne recommandons pas actuellement la protection IP DDoS dans les zones d’atterrissage Azure et vous recommandons d’utiliser cette option dans des circonstances spécifiques. Consultez la documentation du produit à propos de la comparaison des références SKU Azure DDoS Protection
Topologie de réseau Azure classique (hub-and-spoke)
Le module peut éventuellement déployer un ou plusieurs réseaux hubs selon la topologie de réseau Azure classique (hub-and-spoke).
Notes
Le module ne configure actuellement que le hub réseau et les ressources dépendantes pour l’abonnement de connectivité. Bien qu’il existe une option permettant d’activer l’appairage de réseaux virtuels du hub au spoke, les utilisateurs doivent toujours lancer l’appairage du spoke au hub. Cela est dû à des limitations dans la façon dont le fournisseur AzureRM cible un abonnement spécifique pour le déploiement.
Quand vous déployez des ressources selon une topologie de réseau Azure classique (hub-and-spoke), le module déploie et gère les types de ressources suivants (en fonction de la configuration) :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes de ressources | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Réseaux virtuels | Microsoft.Network/virtualNetworks |
azurerm_virtual_network |
Sous-réseaux | Microsoft.Network/virtualNetworks/subnets |
azurerm_subnet |
Passerelles de réseau virtuel | Microsoft.Network/virtualNetworkGateways |
azurerm_virtual_network_gateway |
Pare-feux Azure | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Adresses IP publiques | Microsoft.Network/publicIPAddresses |
azurerm_public_ip |
Peerings de réseaux virtuels | Microsoft.Network/virtualNetworks/virtualNetworkPeerings |
azurerm_virtual_network_peering |
Pour plus d’informations sur l’utilisation de cette fonctionnalité, consultez la page Wiki consacrée au déploiement de ressources de connectivité.
Topologie de réseau Virtual WAN (gérée par Microsoft)
Le module peut éventuellement déployer un ou plusieurs réseaux hubs selon la topologie de réseau Virtual WAN (gérée par Microsoft).
Notes
En raison des différentes fonctionnalités des ressources réseau Virtual WAN par rapport aux ressources classiques, le peering pour les spokes Virtual WAN est bidirectionnel lors de l’utilisation de cette fonctionnalité.
Quand vous déployez des ressources selon une topologie de réseau Virtual WAN (gérée par Microsoft), le module déploie et gère les types de ressources suivants (en fonction de la configuration) :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes de ressources | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Azure Virtual WAN | Microsoft.Network/virtualWans |
azurerm_virtual_wan |
Hubs virtuels | Microsoft.Network/virtualHubs |
azurerm_virtual_hub |
Passerelles Express Route | Microsoft.Network/expressRouteGateways |
azurerm_express_route_gateway |
Passerelles VPN | Microsoft.Network/vpnGateways |
azurerm_vpn_gateway |
Pare-feux Azure | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Stratégies de pare-feu Azure | Microsoft.Network/firewallPolicies |
azurerm_firewall_policy |
Connexions de hub virtuel | Microsoft.Network/virtualHubs/hubVirtualNetworkConnections |
azurerm_virtual_hub_connection |
Pour plus d’informations sur l’utilisation de cette fonctionnalité, consultez la page Wiki consacrée au déploiement de ressources Virtual WAN.
Plan de protection DDoS
Le module peut éventuellement déployer un plan Protection réseau DDos et lier des réseaux virtuels à ce plan si nécessaire.
Notes
En raison des limitations de plateforme, les plans Protection DDoS ne peuvent être activés que pour des réseaux virtuels traditionnels. Les hubs virtuels ne sont pas actuellement pris en charge.
Important
L’aide sur les zones d’atterrissage Azure recommande d’activer Protection réseau DDos pour renforcer la protection de votre plateforme Azure. Pour éviter des coûts inattendus dans les déploiements hors production et MVP, cette fonctionnalité est désactivée dans le module Terraform pour zones d’atterrissage Azure en raison du coût associé à cette ressource.
Pour les environnements de production, nous vous recommandons vivement d’activer cette fonctionnalité.
Quand vous activez le déploiement des ressources du plan Protection DDos, le module déploie et gère les types de ressources suivants (en fonction de la configuration) :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes de ressources | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Plans Protection DDoS | Microsoft.Network/ddosProtectionPlans |
azurerm_network_ddos_protection_plan |
DNS
Le module peut éventuellement déployer des zones DNS privées pour prendre en charge des points de terminaison privés et les lier à des réseaux virtuels hub et/ou spoke. Les zones DNS publiques et privées spécifiées par l’utilisateur peuvent également être déployées et liées en fonction des besoins.
Quand vous activez le déploiement des ressources DNS, le module déploie et gère les types de ressources suivants (en fonction de la configuration) :
Ressource | Type de ressource Azure | Type de ressource Terraform |
---|---|---|
Groupes de ressources | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Zones DNS | Microsoft.Network/dnsZones |
azurerm_dns_zone |
Zones DNS privées | Microsoft.Network/privateDnsZones |
azurerm_private_dns_zone |
Liens de réseau virtuel à la zone DNS privée | Microsoft.Network/privatednszones/virtualnetworklinks |
azurerm_private_dns_zone_virtual_network_link |
Ressources d’identité
Le module offre une option permettant de configurer des stratégies relatives à la zone d’atterrissage de gestion des identités et des accès. Il garantit également que l’abonnement spécifié est placé dans le groupe d’administration approprié.
Notes
Cette fonctionnalité ne déploie aucune ressource. Si vous souhaitez mettre à jour les paramètres de stratégie liés au groupe d’administration des identités, utilisez la variable d’entrée configure_identity_resources
.
Pour plus d’informations sur l’utilisation de cette fonctionnalité, consultez la page Wiki consacrée au déploiement des ressources d’identité.
Prise en main
Les conditions requises pour démarrer avec le module sont documentées dans la page Wiki consacrée au démarrage.
Pour simplifier le démarrage, le module a été publié dans le registre de Terraform. Vous pouvez le référencer directement dans votre code, comme illustré dans l’exemple plus loin dans cet article. Exécutez terraform init
pour télécharger automatiquement le module et toutes les dépendances.
Vous pouvez voir les dernières dépendances de module et de fournisseur sous l’onglet Dépendances dans le Registre Terraform.
Important
Il existe des problèmes connus avec certaines combinaisons de versions de Terraform et de fournisseur AzureRM. Vous pouvez résoudre certains problèmes connus en effectuant une mise à niveau vers les dernières versions de Terraform et du fournisseur AzureRM. Les autres problèmes connus sont des erreurs transitoires que vous pouvez généralement corriger en réexécutant votre déploiement.
Nous vous recommandons généralement d’épingler des versions spécifiques, et de tester minutieusement avant de procéder à la mise à niveau.
Nous publierons de nouvelles versions du module lorsque des modifications seront nécessaires. Les nouvelles versions garantiront la compatibilité avec les dernières versions de Terraform et du fournisseur AzureRM. Pour plus d’informations, consultez notre aide consacrée aux versions des modules.
Pour obtenir les dernières fonctionnalités, vérifiez que la version de ce module est définie sur la dernière version. Si vous effectuez une mise à niveau vers une version ultérieure du module, exécutez terraform init -upgrade
.
Exemple simple
Cet exemple de code déploie le groupe d’administration et l’organisation d’abonnement minimum recommandés à partir de l’architecture de référence à l’échelle d’une entreprise. Une fois que cet exemple simple est opérationnel, vous pouvez commencer à personnaliser votre déploiement.
Conseil
Bien que root_parent_id
soit la seule variable obligatoire du module, nous vous recommandons également de définir root_id
. La modification de la valeur de root_id
entraînera un redéploiement complet de toutes les ressources managées par le module, y compris des dépendances en aval.
Le code suivant est une configuration de départ simple pour votre module racine main.tf
:
# Configure Terraform to set the required AzureRM provider
# version and features{} block.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 2.77.0"
}
}
}
provider "azurerm" {
features {}
}
# Get the current client configuration from the AzureRM provider.
# This configuration is used to populate the root_parent_id variable with the
# current tenant ID used as the ID for the "Tenant Root Group"
# management group.
data "azurerm_client_config" "core" {}
# Use variables to customize the deployment
variable "root_id" {
type = string
default = "es"
}
variable "root_name" {
type = string
default = "Enterprise-Scale"
}
# Declare the Terraform Module for Cloud Adoption Framework
# Enterprise-scale and provide a base configuration.
module "enterprise_scale" {
source = "Azure/caf-enterprise-scale/azurerm"
version = ">= 1.0.0"
providers = {
azurerm = azurerm
azurerm.connectivity = azurerm
azurerm.management = azurerm
}
root_parent_id = data.azurerm_client_config.core.tenant_id
root_id = var.root_id
root_name = var.root_name
}
Étapes suivantes
Le module Terraform pour le Cloud Adoption Framework à l’échelle de l’entreprise permet la création accélérée de zones d’atterrissage à l’échelle de l’entreprise. Il offre également la flexibilité nécessaire pour développer et personnaliser votre déploiement tout en conservant une approche simplifiée de la gestion de la configuration de chaque zone d’atterrissage.
Pour en savoir plus, passez en revue le module dans le Registre Terraform et explorez la documentation du module sur GitHub. Vous trouverez d’autres exemples et tutoriels sur la personnalisation de votre déploiement dans la documentation.
Découvrez comment déployer le module Terraform pour zones d’atterrissage Azure avec HashiCorp Learn. Vous pourrez également explorer le fonctionnement de certaines parties du module.