Dela via


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 av HashiCorp.

Distributionen av resurser till programlandningszoner ligger utanför modulens omfång. Beslut om distributionsmetoden och verktygen är till 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 hjälp av 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 självstudien Installera Terraform på HashiCorp Learn.

Information om hur du konfigurerar Terraform-providern och autentiserar med Azure finns i AzureRM-providerguiderna på Terraform-webbplatsen. Mer information om hur du konfigurerar providern för distribution över flera prenumerationer finns på wiki-sidan 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 i och mellan miljöer.

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

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

  • En 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 prenumerationsorganisationen 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 hanteringsgrupp.
  • Hanterade resurser för hanterings- och anslutningslandningszoner. Dessa resurser tillhandahåller:
    • 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 Private DNS.

Dricks

Mallbiblioteket uppdateras programmatiskt från GitHub-lagringsplatsen i Azure/Enterprise-skala . Om du vill hålla dig uppdaterad med den senaste arketypskonfigurationen, 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 kritiska designområden i Azure-landningszoner. Anpassa dessa resurser så att de uppfyller organisationens krav.

Resurskategori Kritiskt designområde
Kärnresurser Säkerhetsstyrning
för resursorganisation
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 tillämpa konsekvens på Azure-plattformen när du arbetar i stor skala.

Dessa resurser överensstämmer med den konceptuella arkitekturen för Azure-landningszoner:

Diagram över konceptarkitekturen för Azure-landningszonen.

Du kan distribuera dessa resurser, efter funktion, över flera prenumerationer med hjälp av providerkonfigurationen i modulblocket.

I följande avsnitt beskrivs resurstyper och konfigurationsalternativ.

Kärnresurser

Kärnfunktionen i den här modulen distribuerar grunderna i den konceptuella arkitekturen för Azure-landningszoner, med fokus på den centrala resursorganisationen.

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

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

Resurs Azure-resurstyp Terraform-resurstyp
Hanteringsgrupper Microsoft.Management/managementGroups azurerm_management_group
Prenumerationer på hanteringsgrupp 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 .

Dricks

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 hur du autentiserar med Azure finns i dokumentationen om Azure-providern: Autentisera till Azure .

Hanteringsresurser

Modulen innehåller ett alternativ för att aktivera distribution av hanterings- och övervakningsresurser från den konceptuella arkitekturen för Azure-landningszoner till den angivna prenumerationen, enligt beskrivningen på wiki-sidan Providerkonfiguration. Modulen säkerställer också att den angivna prenumerationen placeras i rätt hanteringsgrupp.

Diagram över den konceptuella arkitekturen i 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å wiki-sidan Distribuera hanteringsresurser .

Anslutningsresurser

Modulen innehåller ett alternativ för att aktivera distribution av nätverkstopologi och anslutningsresurser från den konceptuella arkitekturen för Azure-landningszoner till 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 Network Protection till virtuella nätverk och hantera centraliserade offentliga och privata DNS-zoner.

Kommentar

Vi rekommenderar för närvarande inte DDoS IP Protection 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 eventuellt 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 Azure-nätverkstopologi (hubb och eker).

Kommentar

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å wikisidan Distribuera anslutningsresurser .

Virtual WAN-nätverkstopologi (Microsoft-hanterad)

Modulen kan eventuellt distribuera ett eller flera hubbnätverk baserat på den virtuella WAN-nätverkstopologin (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).

Kommentar

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 Virtuell 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å wikisidan Distribuera virtuella WAN-resurser .

DDoS Protection-plan

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

Kommentar

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 för 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 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 Protection-planer Microsoft.Network/ddosProtectionPlans azurerm_network_ddos_protection_plan

DNS

Modulen kan eventuellt distribuera privata 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
Privata DNS-zoner Microsoft.Network/privateDnsZones azurerm_private_dns_zone
Länk till privat DNS-zon för virtuellt nätverk 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 landningszonen 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.

Kommentar

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

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

Komma igång

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

För att förenkla kom igång har modulen publicerats till Terraform Registry. Du kan referera till den direkt i koden, som du ser i det enkla exemplet senare i den här artikeln. Om 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 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 vägledning för modulversioner .

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.

Dricks

Även om root_parent_id är modulens enda obligatoriska variabel rekommenderar vi även att du anger root_id. root_id Om du ändrar värdet 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 i modulen i Terraform Registry och utforskar moduldokumentationen på GitHub. I dokumentationen hittar du fler exempel och självstudier om hur du anpassar distributionen.

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