Share via


Terraform-module voor Azure-landingszones

Azure biedt systeemeigen services voor het bouwen van uw Azure-landingszones. Andere hulpprogramma's kunnen ook helpen bij deze inspanning. Een hulpprogramma dat klanten en partners vaak gebruiken om landingszones te implementeren, is Terraform by HashiCorp.

De implementatie van resources in landingszones voor toepassingen valt buiten het bereik van de module. Beslissingen over de implementatiemethode en hulpprogramma's zijn voor het team dat verantwoordelijk is voor de toepassing.

De De Terraform-module voor Azure-landingszones biedt een snelle implementatie van de platformresources die u nodig hebt voor het beheren Azure-landingszones op schaal met behulp van Terraform. De module is ontworpen om de implementatie van de beheergroephiërarchie, beleidsregels en resources in de connectiviteits- en beheerabonnementen te vereenvoudigen.

Vereisten

Zie Terraform installeren als u niet met Terraform werkt en informatie wilt over het installeren en gebruiken van Zelfstudie Terraform installeren op HashiCorp Learn.

Zie Verifiëren bij Azure bij het gebruik van de AzureRM-provider voor informatie over het instellen van en verificatie bij Azure.Handleidingen voor AzureRM-providers op de Terraform-website. Zie de voor meer informatie over het instellen van de provider voor implementatie in meerdere abonnementen.Wikipagina providerconfiguratie .

Belang van het gebruik van standaardmodules

Hergebruik van onderdelen is een fundamenteel principe van infrastructuur als code. Modules zijn essentieel bij het definiëren van standaarden en consistentie voor resource-implementatie binnen en tussen omgevingen.

De Terraform-module Voor Azure-landingszones wordt gepubliceerd naar de officiële Terraform Registry en wordt geverifieerd door HashiCorp.

De implementatie van de module vanuit het Terraform-register biedt het volgende:

  • Een versnelde levering van Azure-landingszones in uw omgeving.
  • Een getest upgradepad naar de nieuwste versie van de module, samen met strikt versiebeheer.

Voordelen van het gebruik van de module

Voordelen van het gebruik van de Terraform-module voor Azure-landingszones zijn onder andere:

  • Een beheerde en uitbreidbare kernresourcehiërarchie voor abonnementsorganisatie via beheergroepen.
  • Schaalbaar beveiligingsbeheer en naleving via IAM-besturingselementen (Identity and Access Management) van Azure, met een uitgebreide bibliotheek met aangepaste definities die gereed zijn om toe te wijzen.
  • Afdwingen van beleid tussen abonnementen via overname van beheergroepen.
  • Beheerde resources voor beheer- en connectiviteitslandingszones. Deze resources bieden:
    • Gegarandeerde beleidsnaleving door nauwe integratie van resources die worden beheerd door de module en bijbehorende beleidstoewijzingen.
    • Integratie tussen resources om beheeroverhead te verminderen en een verbeterde gebruikerservaring te bieden, zoals het automatisch maken van virtuele netwerkkoppelingen voor Azure Privé-DNS.

Tip

De sjabloonbibliotheek wordt programmatisch bijgewerkt vanuit de GitHub-opslagplaats op Azure/Enterprise-schaal . Als u op de hoogte wilt blijven van de meest recente archetypeconfiguratie, beleidsregels en rollen, moet u ervoor zorgen dat u de nieuwste versie van de module gebruikt.

Resource-implementatie

U kunt de module configureren voor het implementeren van sets resources die zijn afgestemd op de volgende kritieke ontwerpgebieden in Azure-landingszones. Pas deze resources aan om te voldoen aan de vereisten van uw organisatie.

Resourcecategorie Kritiek ontwerpgebied
Kernresources Resourceorganisatie
Beveiligingsbeheer
Governance
Beheerresources Beheer en bewaking
Connectiviteitsresources Netwerktopologie en connectiviteit
Identiteitsresources Identiteits- en toegangsbeheer

Door deze mogelijkheden in één Terraform-module te verpakken, kunt u eenvoudiger consistentie bouwen en afdwingen op het Azure-platform wanneer u op schaal werkt.

Deze resources zijn afgestemd op de conceptuele architectuur van Azure-landingszones:

Diagram van de conceptuele architectuur van de Azure-landingszone.

U kunt deze resources per mogelijkheid implementeren voor meerdere abonnementen met behulp van de Providerconfiguratie op het moduleblok.

In de volgende secties worden de resourcetypen en configuratieopties beschreven.

Kernresources

De kernfunctionaliteit van deze module implementeert de basisbeginselen van de conceptarchitectuur voor Azure-landingszones, met de focus op de centrale resource-organisatie.

Diagram van de conceptuele architectuur van de Azure-landingszone, gericht op de kernresourcehiërarchie.

Wanneer u de implementatie van kernresources inschakelt (standaard ingeschakeld), implementeert en beheert de module de volgende resourcetypen:

Resource Azure-resourcetype Terraform-resourcetype
Beheergroepen Microsoft.Management/managementGroups azurerm_management_group
Beheergroepabonnementen Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Beleidstoewijzingen Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Beleidsdefinities Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Definities van beleidssets Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Roltoewijzingen Microsoft.Authorization/roleAssignments azurerm_role_assignment
Roldefinities Microsoft.Authorization/roleDefinitions azurerm_role_definition

Het exacte aantal resources dat de module maakt, is afhankelijk van de configuratie van de module. Voor een standaardconfiguratie kunt u verwachten dat de module ongeveer 180 resources maakt.

Tip

Geen van deze resources wordt geïmplementeerd in het abonnementsbereik, maar Terraform vereist nog steeds een abonnement om een geverifieerde sessie met Azure tot stand te brengen. Zie Verifiëren bij Azure meer informatie over verificatie met Azure.Azure-provider: verificatie bij Azure-documentatie .

Beheerresources

De module biedt een optie voor het inschakelen van de implementatie van beheer- en bewakingsresources vanuit de conceptuele architectuur voor Azure-landingszones in het opgegeven abonnement, zoals beschreven in de Wikipagina providerconfiguratie. De module zorgt er ook voor dat het opgegeven abonnement in de juiste beheergroep wordt geplaatst.

Diagram van de conceptuele architectuur van de Azure-landingszone, gericht op de beheerresources.

Wanneer u de implementatie van beheerresources inschakelt, implementeert en beheert de module de volgende resourcetypen (afhankelijk van de configuratie):

Resource Azure-resourcetype Terraform-resourcetype
Resourcegroepen Microsoft.Resources/resourceGroups azurerm_resource_group
Log Analytics-werkruimte Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Log Analytics-oplossingen Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Automation-account Microsoft.Automation/automationAccounts azurerm_automation_account
Gekoppelde Log Analytics-service Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Naast het implementeren van de bovenstaande resources biedt de module systeemeigen integratie in de bijbehorende beleidstoewijzingen om volledige beleidsnaleving te garanderen.

Zie de Beheerresources implementeren voor meer informatie over het gebruik van deze mogelijkheid.

Connectiviteitsresources

De module biedt een optie voor het inschakelen van de implementatie van netwerktopologie- en connectiviteitsresources uit de conceptuele architectuur voor Azure-landingszones in de huidige abonnementscontext. Het zorgt er ook voor dat het opgegeven abonnement in de juiste beheergroep wordt geplaatst.

Met deze mogelijkheid kunt u meerdere hubnetwerken implementeren op basis van een combinatie van traditionele Azure-netwerktopologie (hub en spoke) en Virtual WAN netwerktopologie (door Microsoft beheerd).

De module kan ook DDoS-netwerkbeveiliging maken en koppelen aan virtuele netwerken, en gecentraliseerde openbare en privé-DNS-zones beheren.

Notitie

We raden momenteel geen DDoS IP Protection in Azure-landingszones aan en raden u aan deze optie in specifieke omstandigheden te gebruiken. Raadpleeg de productdocumentatie Over vergelijking van Azure DDoS Protection-SKU's

Traditionele Azure-netwerktopologie (hub en spoke)

De module kan desgewenst een of meer hubnetwerken implementeren op basis van de traditionele Azure-netwerktopologie (hub en spoke).

Diagram van de conceptuele architectuur van de Azure-landingszone, gericht op de connectiviteitsresources met behulp van een traditionele Azure-netwerktopologie (hub en spoke).

Notitie

De module configureert momenteel alleen de netwerkhub en afhankelijke resources voor het connectiviteitsabonnement. Hoewel er een optie is om uitgaande peering van virtuele netwerken van hub naar spoke in te schakelen, moeten gebruikers nog steeds peering van spoke naar hub initiëren. Dit wordt veroorzaakt door beperkingen in de wijze waarop de AzureRM-provider zich richt op een specifiek abonnement voor implementatie.

Wanneer u resources implementeert op basis van een traditionele Azure-netwerktopologie (hub en spoke), worden met de module de volgende resourcetypen geïmplementeerd en beheerd (afhankelijk van de configuratie):

Resource Azure-resourcetype Terraform-resourcetype
Resourcegroepen Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuele netwerken Microsoft.Network/virtualNetworks azurerm_virtual_network
Subnetten Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Virtuele netwerkgateways Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Azure-firewalls Microsoft.Network/azureFirewalls azurerm_firewall
Openbare IP-adressen Microsoft.Network/publicIPAddresses azurerm_public_ip
Peerings van virtuele netwerken Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Zie de Connectiviteitsresources implementeren voor meer informatie over het gebruik van deze mogelijkheid.

Virtual WAN netwerktopologie (door Microsoft beheerd)

De module kan desgewenst een of meer hubnetwerken implementeren op basis van de Virtual WAN netwerktopologie (door Microsoft beheerd).

Diagram van de conceptuele architectuur van de Azure-landingszone, gericht op de connectiviteitsresources met behulp van een Virtual WAN netwerktopologie (door Microsoft beheerd).

Notitie

Vanwege de verschillende mogelijkheden van Virtual WAN netwerkresources ten opzichte van traditioneel, is peering voor Virtual WAN spokes bidirectioneel wanneer u deze mogelijkheid gebruikt.

Wanneer u resources implementeert op basis van een Virtual WAN netwerktopologie (door Microsoft beheerd), worden de volgende resourcetypen geïmplementeerd en beheerd (afhankelijk van de configuratie):

Resource Azure-resourcetype Terraform-resourcetype
Resourcegroepen Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuele WAN's Microsoft.Network/virtualWans azurerm_virtual_wan
Virtuele hubs Microsoft.Network/virtualHubs azurerm_virtual_hub
ExpressRoute-gateways Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
VPN-gateways Microsoft.Network/vpnGateways azurerm_vpn_gateway
Azure-firewalls Microsoft.Network/azureFirewalls azurerm_firewall
Azure Firewall-beleid Microsoft.Network/firewallPolicies azurerm_firewall_policy
Virtuele hubverbindingen Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Zie de Implementeren Virtual WAN Resources voor meer informatie over het gebruik van deze mogelijkheid.

DDoS-beschermingsplan

De module kan desgewenst DDoS-netwerkbeveiliging implementeren en zo nodig virtuele netwerken aan het plan koppelen.

Notitie

Vanwege platformbeperkingen kunnen DDoS Protection-abonnementen alleen worden ingeschakeld voor traditionele virtuele netwerken. Ondersteuning voor virtuele hubs is momenteel niet beschikbaar.

Belangrijk

In de richtlijnen voor Azure-landingszones wordt aanbevolen om DDoS Network Protection in te schakelen om de beveiliging van uw Azure-platform te verbeteren. Om onverwachte kosten in niet-productie- en MVP-implementaties te voorkomen, is deze mogelijkheid uitgeschakeld in de Terraform-module voor Azure-landingszones vanwege de kosten die aan deze resource zijn gekoppeld.

Voor productieomgevingen raden we u ten zeerste aan deze mogelijkheid in te schakelen.

Wanneer u de implementatie van de implementatie van DDoS Protection-planresources inschakelt, implementeert en beheert de module de volgende resourcetypen (afhankelijk van de configuratie):

Resource Azure-resourcetype Terraform-resourcetype
Resourcegroepen Microsoft.Resources/resourceGroups azurerm_resource_group
DDoS-beveiligingsplannen Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

De module kan optioneel Privé-DNS-zones implementeren ter ondersteuning van privé-eindpunten en deze koppelen aan hub- en/of spoke-virtuele netwerken. Door de gebruiker opgegeven openbare en privé-DNS-zones kunnen indien nodig ook worden geïmplementeerd en gekoppeld.

Wanneer u de implementatie van DNS-resources inschakelt, implementeert en beheert de module de volgende resourcetypen (afhankelijk van de configuratie):

Resource Azure-resourcetype Terraform-resourcetype
Resourcegroepen Microsoft.Resources/resourceGroups azurerm_resource_group
DNS-zones Microsoft.Network/dnsZones azurerm_dns_zone
Privé-DNS zones Microsoft.Network/privateDnsZones azurerm_private_dns_zone
koppeling Virtual Network zone Privé-DNS Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Identiteitsresources

De module biedt een optie voor het configureren van beleidsregels met betrekking tot landingszone voor identiteits- en toegangsbeheer. Het zorgt er ook voor dat het opgegeven abonnement in de juiste beheergroep wordt geplaatst.

Diagram van de conceptuele architectuur van de Azure-landingszone, gericht op de identiteitsresources.

Notitie

Met deze mogelijkheid worden geen resources geïmplementeerd. Als u beleidsinstellingen wilt bijwerken die betrekking hebben op de identiteitsbeheergroep, gebruikt u de configure_identity_resources invoervariabele.

Zie de Identiteitsresources implementeren voor meer informatie over het gebruik van deze mogelijkheid.

Aan de slag

Vereisten voor het aan de slag gaan met de module worden beschreven op de pagina Aan de slag Wiki.

Om aan de slag te gaan, is de module gepubliceerd naar de Terraform-register. U kunt er rechtstreeks in uw code naar verwijzen, zoals wordt weergegeven in het eenvoudige voorbeeld verderop in dit artikel. Als u uitvoert terraform init , worden de module en alle afhankelijkheden automatisch gedownload.

U kunt de meest recente module- en providerafhankelijkheden bekijken in de Tabblad Afhankelijkheden in het Terraform-register.

Belangrijk

Er zijn bekende problemen met sommige combinaties van Terraform- en AzureRM-providerversies. U kunt enkele bekende problemen oplossen door een upgrade uit te voeren naar de nieuwste terraform- en AzureRM-providerversies. Andere bekende problemen zijn tijdelijke fouten die u doorgaans kunt oplossen door uw implementatie opnieuw uit te voeren.

Over het algemeen raden we aan om vast te maken aan specifieke versies en grondig te testen voordat u een upgrade uitvoert.

Er worden nieuwe versies van de module uitgebracht wanneer er wijzigingen nodig zijn. Nieuwe releases zorgen voor compatibiliteit met de nieuwste terraform- en AzureRM-providerversies. Raadpleeg onze Module releases guidance (Richtlijnen voor modulereleases ) voor meer informatie.

Als u de nieuwste functies wilt ophalen, moet u ervoor zorgen dat de moduleversie is ingesteld op de nieuwste versie. Als u een upgrade uitvoert naar een nieuwere versie van de module, voert u uit terraform init -upgrade.

GitHub-release (meest recente SemVer)

Eenvoudig voorbeeld

Met deze voorbeeldcode wordt de minimaal aanbevolen beheergroep en abonnementsorganisatie geïmplementeerd vanuit de referentiearchitectuur op ondernemingsniveau. Nadat u dit eenvoudige voorbeeld aan de slag hebt gegaan, kunt u beginnen met het aanpassen van uw implementatie.

Tip

Hoewel root_parent_id de module de enige verplichte variabele is, raden we u ook aan in te stellen root_id. Als u de root_id waarde wijzigt, wordt een volledige herimplementatie gestart van alle resources die door de module worden beheerd, inclusief downstreamafhankelijkheden.

De volgende code is een eenvoudige configuratie voor het starten van uw main.tf hoofdmodule:

# 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

}

Volgende stappen

De De Terraform-module voor Cloud Adoption Framework Enterprise-schaal biedt een versneld pad naar het bouwen van landingszones op ondernemingsniveau. Het biedt ook de flexibiliteit om uw implementatie uit te breiden en aan te passen, met behoud van een vereenvoudigde benadering voor het beheren van de configuratie van elke landingszone.

meer informatie.bekijk de module in het Terraform-register en verken de moduledocumentatie op GitHub. In de documentatie vindt u meer voorbeelden en zelfstudies over het aanpassen van uw implementatie.

Meer informatie over de Terraform-module Voor Azure-landingszones implementeren via HashiCorp Learn. Van daaruit kunt u ook ontdekken hoe sommige onderdelen van de module werken.