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