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