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 des identités et des 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 :

Diagramme de 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.

Diagramme de l’architecture conceptuelle des zones d’atterrissage Azure, l’accent étant mise sur la hiérarchie des ressources de base.

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é.

Diagramme de l’architecture conceptuelle des zones d’atterrissage Azure, l’accent étant mise sur les ressources de gestion.

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).

Diagramme de l’architecture conceptuelle des zones d’atterrissage Azure, l’accent étant mis sur les ressources de connectivité utilisant une 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).

Diagramme de l’architecture conceptuelle des zones d’atterrissage Azure, l’accent étant mis sur les ressources de connectivité utilisant une 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é.

Diagramme de l’architecture conceptuelle des zones d’atterrissage Azure, l’accent étant mise sur les ressources d’identité.

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.

Version GitHub (dernier SemVer)

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.