Terraform-modul för Azure-landningszoner

Azure tillhandahåller interna tjänster för att skapa dina Azure-landningszoner. Andra verktyg kan också hjälpa dig med det här arbetet. Ett verktyg som kunder och partner ofta använder för att distribuera landningszoner är Terraform från HashiCorp.

Distributionen av resurser till programlandningszoner ligger utanför modulens omfång. Beslut om distributionsmetod och verktyg är för det team som ansvarar för programmet.

Terraform-modulen Azure-landningszoner ger en snabb implementering av de plattformsresurser som du behöver för att hantera Azure-landningszoner i stor skala med terraform. Modulen är utformad för att förenkla distributionen av hanteringsgruppens hierarki, principer och resurser i anslutnings- och hanteringsprenumerationerna.

Förutsättningar

Om Terraform är nytt för dig och du vill ha information om hur du installerar och använder det kan du läsa Installera Terraform-självstudien på HashiCorp Learn.

Information om hur du konfigurerar Terraform-providern och autentiserar med Azure finns i AzureRM-providerguider på Terraform-webbplatsen. Information om hur du konfigurerar providern för distribution över flera prenumerationer finns i Wiki-sida för providerkonfiguration .

Vikten av att använda standardmoduler

Återanvändning av komponenter är en grundläggande princip för infrastruktur som kod. Moduler är avgörande för att definiera standarder och konsekvens för resursdistribution inom och mellan miljöer.

Terraform-modulen för Azure-landningszoner publiceras till de officiella Terraform-registret och verifieras av HashiCorp.

När du distribuerar modulen från Terraform-registret får du:

  • Snabbare leverans av Azure-landningszoner i din miljö.
  • En testad uppgraderingssökväg till den senaste versionen av modulen, tillsammans med strikt versionskontroll.

Fördelar med att använda modulen

Fördelarna med att använda Terraform-modulen Azure-landningszoner är:

  • En hanterad och utökningsbar kärnresurshierarki för prenumerationsorganisation via hanteringsgrupper.
  • Skalbar säkerhetsstyrning och efterlevnad via IAM-kontroller (Identitets- och åtkomsthantering i Azure) med ett omfattande bibliotek med anpassade definitioner som är redo att tilldelas.
  • Tillämpning av principer mellan prenumerationer via arv av hanteringsgrupper.
  • Hanterade resurser för hanterings- och anslutningslandningszoner. Dessa resurser ger:
    • Garanterad principefterlevnad genom nära integrering av resurser som hanteras av modulen och motsvarande principtilldelningar.
    • Integrering mellan resurser för att minska hanteringskostnaderna och ge en förbättrad användarupplevelse, till exempel automatisk skapande av virtuella nätverkslänkar för Azure Privat DNS.

Tips

Mallbiblioteket uppdateras programmatiskt från Azure/GitHub-lagringsplats i företagsskala . Om du vill hålla dig uppdaterad med den senaste arketypkonfigurationen, principerna och rollerna kontrollerar du att du använder den senaste versionen av modulen.

Resursdistribution

Du kan konfigurera modulen för att distribuera uppsättningar med resurser som överensstämmer med följande viktiga designområden i Azure-landningszoner. Anpassa dessa resurser så att de uppfyller organisationens krav.

Resurskategori Kritiskt designområde
Kärnresurser Resursorganisationens
Säkerhetsstyrning
Styrelseformer
Hanteringsresurser Hantering och övervakning
Anslutningsresurser Nätverkstopologi och anslutning
Identitetsresurser Identitets- och åtkomsthantering

Genom att paketera dessa funktioner i en enda Terraform-modul blir det enklare att skapa och framtvinga konsekvens på Azure-plattformen när du arbetar i stor skala.

Dessa resurser överensstämmer med konceptuell arkitektur för Azure-landningszoner:

Diagram över den konceptuella arkitekturen för Azure-landningszonen.

Du kan distribuera dessa resurser, efter funktion, över flera prenumerationer med hjälp av Providerkonfiguration på modulblocket.

I följande avsnitt beskrivs resurstyper och konfigurationsalternativ.

Kärnresurser

Kärnfunktionen i den här modulen distribuerar grunderna i den konceptuell arkitektur för Azure-landningszoner, med fokus på den centrala resursorganisation.

Diagram över den konceptuella arkitekturen för Azure-landningszonen med fokus på kärnresurshierarkin.

När du aktiverar distribution av kärnresurser (aktiverat som standard) distribuerar och hanterar modulen följande resurstyper:

Resurs Azure-resurstyp Terraform-resurstyp
Hanteringsgrupper Microsoft.Management/managementGroups azurerm_management_group
Prenumerationer på hanteringsgrupper Microsoft.Management/managementGroups/subscriptions azurerm_management_group
Principtilldelningar Microsoft.Authorization/policyAssignments azurerm_management_group_policy_assignment
Principdefinitioner Microsoft.Authorization/policyDefinitions azurerm_policy_definition
Definitioner för principuppsättningar Microsoft.Authorization/policySetDefinitions azurerm_policy_set_definition
Rolltilldelningar Microsoft.Authorization/roleAssignments azurerm_role_assignment
Rolldefinitioner Microsoft.Authorization/roleDefinitions azurerm_role_definition

Det exakta antalet resurser som modulen skapar beror på modulkonfigurationen. För en standardkonfiguration kan du förvänta dig att modulen skapar ungefär resurser 180 .

Tips

Ingen av dessa resurser distribueras i prenumerationsomfånget, men Terraform kräver fortfarande en prenumeration för att upprätta en autentiserad session med Azure. Mer information om autentisering med Azure finns i Azure-provider: Autentisera till Azure-dokumentation .

Hanteringsresurser

Modulen innehåller ett alternativ för att aktivera distribution av hanterings- och övervakningsresurser från konceptuell arkitektur för Azure-landningszoner i den angivna prenumerationen enligt beskrivningen i Wiki-sida för providerkonfiguration. Modulen säkerställer också att den angivna prenumerationen placeras i rätt hanteringsgrupp.

Diagram över den konceptuella arkitekturen för Azure-landningszonen med fokus på hanteringsresurserna.

När du aktiverar distribution av hanteringsresurser distribuerar och hanterar modulen följande resurstyper (beroende på konfiguration):

Resurs Azure-resurstyp Terraform-resurstyp
Resursgrupper Microsoft.Resources/resourceGroups azurerm_resource_group
Log Analytics-arbetsyta Microsoft.OperationalInsights/workspaces azurerm_log_analytics_workspace
Log Analytics-lösningar Microsoft.OperationsManagement/solutions azurerm_log_analytics_solution
Automation-konto Microsoft.Automation/automationAccounts azurerm_automation_account
Länkad Log Analytics-tjänst Microsoft.OperationalInsights/workspaces /linkedServices azurerm_log_analytics_linked_service

Förutom att distribuera ovanstående resurser tillhandahåller modulen intern integrering i motsvarande principtilldelningar för att säkerställa fullständig principefterlevnad.

Mer information om hur du använder den här funktionen finns på wikisidan Distribuera hanteringsresurser .

Anslutningsresurser

Modulen innehåller ett alternativ för att aktivera distribution av nätverkstopologi och anslutningsresurser från konceptuell arkitektur för Azure-landningszoner i den aktuella prenumerationskontexten. Det säkerställer också att den angivna prenumerationen placeras i rätt hanteringsgrupp.

Den här funktionen möjliggör distribution av flera hubbnätverk baserat på valfri kombination av traditionell Azure-nätverkstopologi (hubb och eker) och Virtual WAN nätverkstopologi (Microsoft-hanterad).

Modulen kan också skapa och länka DDoS-nätverksskydd till virtuella nätverk och hantera centraliserade offentliga och privata DNS-zoner.

Anteckning

Vi rekommenderar för närvarande inte DDoS IP-skydd i Azure-landningszoner och rekommenderar att du använder det här alternativet under specifika omständigheter. Läs produktdokumentationen Om jämförelse av Azure DDoS Protection SKU

Traditionell Azure-nätverkstopologi (hubb och eker)

Modulen kan om du vill distribuera ett eller flera hubbnätverk baserat på den traditionella Azure-nätverkstopologin (hubb och eker).

Diagram över den konceptuella arkitekturen i Azure-landningszonen med fokus på anslutningsresurserna med hjälp av en traditionell Nätverkstopologi i Azure (hubb och eker).

Anteckning

Modulen konfigurerar för närvarande endast nätverkshubben och beroende resurser för anslutningsprenumerationen. Även om det finns ett alternativ för att aktivera utgående peering för virtuella nätverk från hubb till eker, måste användarna fortfarande initiera peering från eker till hubb. Detta beror på begränsningar i hur AzureRM-providern riktar in sig på en specifik prenumeration för distribution.

När du distribuerar resurser baserat på en traditionell Azure-nätverkstopologi (hubb och eker) distribuerar och hanterar modulen följande resurstyper (beroende på konfiguration):

Resurs Azure-resurstyp Terraform-resurstyp
Resursgrupper Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuella nätverk Microsoft.Network/virtualNetworks azurerm_virtual_network
Undernät Microsoft.Network/virtualNetworks/subnets azurerm_subnet
Virtuella nätverksgatewayer Microsoft.Network/virtualNetworkGateways azurerm_virtual_network_gateway
Azure-brandväggar Microsoft.Network/azureFirewalls azurerm_firewall
Offentliga IP-adresser Microsoft.Network/publicIPAddresses azurerm_public_ip
Peering för virtuella nätverk Microsoft.Network/virtualNetworks/virtualNetworkPeerings azurerm_virtual_network_peering

Mer information om hur du använder den här funktionen finns på wiki: Distribuera anslutningsresurser wiki-sida.

Virtual WAN nätverkstopologi (Microsoft-hanterad)

Modulen kan också distribuera ett eller flera hubbnätverk baserat på Virtual WAN nätverkstopologi (Microsoft-hanterad).

Diagram över den konceptuella arkitekturen i Azure-landningszonen med fokus på anslutningsresurserna med hjälp av en Virtual WAN nätverkstopologi (Microsoft-hanterad).

Anteckning

På grund av de olika funktionerna i Virtual WAN nätverksresurser jämfört med traditionella är peering för Virtual WAN ekrar dubbelriktad när du använder den här funktionen.

När du distribuerar resurser baserat på en Virtual WAN nätverkstopologi (Microsoft-hanterad) distribuerar och hanterar modulen följande resurstyper (beroende på konfiguration):

Resurs Azure-resurstyp Terraform-resurstyp
Resursgrupper Microsoft.Resources/resourceGroups azurerm_resource_group
Virtuella WAN-nätverk Microsoft.Network/virtualWans azurerm_virtual_wan
Virtuella hubbar Microsoft.Network/virtualHubs azurerm_virtual_hub
Express Route-gatewayer Microsoft.Network/expressRouteGateways azurerm_express_route_gateway
VPN-gatewayer Microsoft.Network/vpnGateways azurerm_vpn_gateway
Azure Firewall-brandväggar Microsoft.Network/azureFirewalls azurerm_firewall
Azure Firewall principer Microsoft.Network/firewallPolicies azurerm_firewall_policy
Virtual Hub-anslutningar Microsoft.Network/virtualHubs/hubVirtualNetworkConnections azurerm_virtual_hub_connection

Mer information om hur du använder den här funktionen finns på wikindistribuera Virtual WAN resurser wiki-sidan.

DDoS-skyddsplan

Modulen kan eventuellt distribuera DDoS Network Protection och länka virtuella nätverk till planen om det behövs.

Anteckning

På grund av plattformsbegränsningar kan DDoS Protection-planer endast aktiveras för traditionella virtuella nätverk. Stöd för virtuell hubb är inte tillgängligt för närvarande.

Viktigt

Vägledningen för Azure-landningszoner rekommenderar att du aktiverar DDoS Network Protection för att öka skyddet av din Azure-plattform. För att förhindra oväntade kostnader i icke-produktions- och MVP-distributioner inaktiveras den här funktionen i Terraform-modulen för Azure-landningszoner på grund av kostnaden för den här resursen.

För produktionsmiljöer rekommenderar vi starkt att du aktiverar den här funktionen.

När du aktiverar distribution av DDoS Protection-planresurser distribuerar och hanterar modulen följande resurstyper (beroende på konfiguration):

Resurs Azure-resurstyp Terraform-resurstyp
Resursgrupper Microsoft.Resources/resourceGroups azurerm_resource_group
DDoS-skyddsplaner Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

Modulen kan också distribuera Privat DNS zoner för att stödja privata slutpunkter och länka dem till virtuella nav- och/eller ekernätverk. Användardefinierade offentliga och privata DNS-zoner kan också distribueras och länkas efter behov.

När du aktiverar distribution av DNS-resurser distribuerar och hanterar modulen följande resurstyper (beroende på konfiguration):

Resurs Azure-resurstyp Terraform-resurstyp
Resursgrupper Microsoft.Resources/resourceGroups azurerm_resource_group
DNS-zoner Microsoft.Network/dnsZones azurerm_dns_zone
Privat DNS zoner Microsoft.Network/privateDnsZones azurerm_private_dns_zone
Privat DNS Zone Virtual Network Link Microsoft.Network/privatednszones/virtualnetworklinks azurerm_private_dns_zone_virtual_network_link

Identitetsresurser

Modulen innehåller ett alternativ för att konfigurera principer som rör landningszon för identitets- och åtkomsthantering. Det säkerställer också att den angivna prenumerationen placeras i rätt hanteringsgrupp.

Diagram över den konceptuella arkitekturen i Azure-landningszonen med fokus på identitetsresurserna.

Anteckning

Den här funktionen distribuerar inga resurser. Om du vill uppdatera principinställningar relaterade till identitetshanteringsgruppen använder configure_identity_resources du indatavariabeln.

Mer information om hur du använder den här funktionen finns på wikin Distribuera identitetsresurser wiki-sidan.

Komma igång

Kraven för att komma igång med modulen finns dokumenterade på Komma igång Wiki-sida.

För att förenkla komma igång har modulen publicerats i Terraform Registry. Du kan referera till den direkt i koden, som du ser i det enkla exemplet senare i den här artikeln. När du kör terraform init laddas modulen och alla beroenden ned automatiskt.

Du kan visa de senaste modul- och providerberoendena på Fliken Beroenden i Terraform-registret.

Viktigt

Det finns kända problem med vissa kombinationer av Terraform- och AzureRM-providerversioner. Du kan lösa några kända problem genom att uppgradera till de senaste Terraform- och AzureRM-providerversionerna. Andra kända problem är tillfälliga fel som du vanligtvis kan åtgärda genom att köra distributionen igen.

Vi rekommenderar vanligtvis att du fäster på specifika versioner och testar noggrant innan du uppgraderar.

Vi släpper nya versioner av modulen när ändringar behövs. Nya versioner säkerställer kompatibilitet med de senaste Terraform- och AzureRM-providerversionerna. Mer information finns i vår .

Om du vill hämta de senaste funktionerna kontrollerar du att modulversionen är inställd på den senaste versionen. Om du uppgraderar till en senare version av modulen kör du terraform init -upgrade.

GitHub-version (senaste SemVer)

Enkelt exempel

Den här exempelkoden distribuerar den minsta rekommenderade hanteringsgruppen och prenumerationsorganisationen från referensarkitekturen i företagsskala. När du har det här enkla exemplet igång kan du börja anpassa distributionen.

Tips

Även om root_parent_id är modulens enda obligatoriska variabel rekommenderar vi även att du anger root_id. Om du ändrar värdet root_id startas en fullständig omdistribution av alla resurser som modulen hanterar, inklusive underordnade beroenden.

Följande kod är en enkel startkonfiguration för rotmodulen 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

}

Nästa steg

Terraform-modulen för Cloud Adoption Framework Enterprise-skala ger en snabbare väg för att skapa landningszoner i företagsskala. Det ger också flexibiliteten att expandera och anpassa distributionen samtidigt som du har en förenklad metod för att hantera konfigurationen av varje landningszon.

Mer information finns granska modulen i Terraform Registry och utforska moduldokumentation på GitHub. I dokumentationen hittar du fler exempel och självstudier om hur du anpassar distributionen.

Lär dig hur du distribuera Terraform-modulen för Azure-landningszoner via HashiCorp Learn. Därifrån kan du också se hur vissa delar av modulen fungerar.