Azure-Zielzonen-Terraform-Modul
Azure bietet native Dienste zum Erstellen Ihrer Azure-Zielzonen. Andere Tools können dabei ebenfalls hilfreich sein. Ein Tool, das Kunden und Partner häufig zum Bereitstellen von Zielzonen verwenden, ist Terraform von HashiCorp.
Die Bereitstellung von Ressourcen für Anwendungszielzonen wird in diesem Modul nicht behandelt. Entscheidungen hinsichtlich der Bereitstellungsmethode und der Tools müssen vom für die Anwendung zuständigen Team getroffen werden.
Das Terraform-Modul für Azure-Zielzonen bietet eine schnelle Implementierung der Plattformressourcen, die Sie benötigen, um Azure-Zielzonen mithilfe von Terraform im großen Stil zu verwalten. Das Modul vereinfacht die Bereitstellung der Verwaltungsgruppenhierarchie, Richtlinien und Ressourcen in den Konnektivitäts- und Verwaltungsabonnements.
Voraussetzungen
Wenn Sie noch nicht mit Terraform vertraut sind und Informationen zur Installation und Verwendung von Terraform wünschen, können Sie im Tutorial Installieren von Terraform auf HashiCorp Learn mehr darüber erfahren.
Informationen zum Einrichten des Terraform-Anbieters und zum Authentifizieren mit Azure finden Sie im Leitfaden zu AzureRM-Anbietern auf der Terraform-Website. Informationen zum Einrichten des Anbieters für die abonnementübergreifende Bereitstellung finden Sie auf der Wiki-Seite Anbieterkonfiguration.
Bedeutung der Verwendung von Standardmodulen
Die Wiederverwendung von Komponenten ist ein grundlegendes Prinzip von Infrastructure-as-Code. Die Module dienen zum Definieren von Standards und Konsistenz der gesamten Ressourcenbereitstellung inner- und außerhalb von Umgebungen.
Das Terraform-Modul für Azure-Zielzonen wird in der offiziellen Terraform-Registrierung veröffentlicht und wurde von HashiCorp überprüft.
Die Bereitstellung des Moduls aus der Terraform-Registrierung bietet Folgendes:
- Beschleunigte Bereitstellung von Azure-Zielzonen in Ihrer Umgebung.
- Getesteter Upgradepfad zur neuesten Version des Moduls sowie eine strenge Versionskontrolle.
Vorteile der Verwendung des Moduls
Die Vorteile der Verwendung des Terraform-Moduls für Azure-Zielzonen umfassen unter anderem Folgendes:
- Eine Hierarchie mit verwalteten und erweiterbaren Kernressourcen für die Organisation von Abonnements durch Verwaltungsgruppen.
- Skalierbare Sicherheitsgovernance und Compliance durch IAM-Kontrollen (Azure Identity and Access Management, Identitäts- und Zugriffsverwaltung in Azure) mit einer umfangreichen Bibliothek benutzerdefinierter Definitionen, die zuweisungsbereit sind.
- Abonnementübergreifende Erzwingung von Richtlinien durch Verwaltungsgruppenvererbung.
- Verwaltete Ressourcen für Verwaltungs- und Konnektivitätszielzonen. Diese Ressourcen stellen Folgendes bereit:
- Zugesicherte Richtlinienkonformität durch enge Integration der vom Modul verwalteten Ressourcen und der entsprechenden Richtlinienzuweisungen.
- Integration zwischen Ressourcen, um den Verwaltungsaufwand zu reduzieren und eine verbesserte Benutzererfahrung zu bieten, z. B. die automatische Erstellung virtueller Netzwerkverbindungen für Azure Private DNS.
Tipp
Die Vorlagenbibliothek wird programmgesteuert über das GitHub-Repository Azure/Enterprise-Scale aktualisiert. Um mit den neuesten Archetypkonfigurationen, Richtlinien und Rollen auf dem Laufenden zu bleiben, stellen Sie sicher, dass Sie die neueste Version des Moduls verwenden.
Bereitstellung von Ressourcen
Sie können das Modul so konfigurieren, dass Ressourcensätze bereitgestellt werden, die auf die folgenden wichtigen Entwurfsbereiche in Azure-Zielzonen abgestimmt sind. Passen Sie diese Ressourcen an die Anforderungen Ihrer Organisation an.
Ressourcenkategorie | Wichtiger Entwurfsbereich |
---|---|
Kernressourcen | Ressourcenorganisation Sicherheit Governance |
Verwaltungsressourcen | Verwaltung und Überwachung |
Konnektivitätsressourcen | Netzwerktopologie und Konnektivität |
Identitätsressourcen | Identitäts- und Zugriffsverwaltung |
Indem diese Funktionen in einem Terraform-Modul zusammengefasst werden, werden das Erstellen und Erzwingen von Konsistenz für die gesamte Azure-Plattform beim Arbeiten in großem Umfang vereinfacht.
Diese Ressourcen sind auf die konzeptionelle Architektur von Azure-Zielzonen abgestimmt:
Sie können diese Ressourcen nach Funktionalität abonnementübergreifend mithilfe der Anbieterkonfiguration im Modulblock bereitstellen.
In den folgenden Abschnitten werden die Ressourcentypen und Konfigurationsoptionen erläutert.
Kernressourcen
Die Kernfunktion dieses Moduls stellt die Grundlagen der konzeptionellen Architektur der Azure-Zielzonen bereit, wobei der Schwerpunkt auf der zentralen Ressourcenorganisation liegt.
Wenn Sie die Bereitstellung von Kernressourcen aktivieren (standardmäßig aktiviert), werden die folgenden Ressourcentypen durch das Modul bereitgestellt und verwaltet:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Verwaltungsgruppen | Microsoft.Management/managementGroups |
azurerm_management_group |
Verwaltungsgruppenabonnements | Microsoft.Management/managementGroups/subscriptions |
azurerm_management_group |
Richtlinienzuweisungen | Microsoft.Authorization/policyAssignments |
azurerm_management_group_policy_assignment |
Richtliniendefinitionen | Microsoft.Authorization/policyDefinitions |
azurerm_policy_definition |
Richtliniensatzdefinitionen | Microsoft.Authorization/policySetDefinitions |
azurerm_policy_set_definition |
Rollenzuweisungen | Microsoft.Authorization/roleAssignments |
azurerm_role_assignment |
Rollendefinitionen | Microsoft.Authorization/roleDefinitions |
azurerm_role_definition |
Die genaue Anzahl der Ressourcen, die vom Modul erstellt werden, hängt von der Modulkonfiguration ab. Bei einer Standardkonfiguration erstellt das Modul voraussichtlich etwa 180
Ressourcen.
Tipp
Keine dieser Ressourcen wird im Abonnementumfang bereitgestellt, aber Terraform erfordert weiterhin, dass ein Abonnement eine authentifizierte Sitzung mit Azure herstellt. Weitere Informationen zur Authentifizierung mit Azure finden Sie in der Dokumentation Azure-Anbieter: Authentifizieren bei Azure.
Verwaltungsressourcen
Das Modul ermöglicht die Bereitstellung von Verwaltungs- und Überwachungsressourcen aus der konzeptionellen Architektur für Azure-Zielzonen im angegebenen Abonnement, wie auf der Wiki-Seite Anbieterkonfiguration beschrieben. Außerdem stellt das Modul sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.
Wenn Sie die Bereitstellung von Verwaltungsressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Ressourcengruppen | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Log Analytics-Arbeitsbereich | Microsoft.OperationalInsights/workspaces |
azurerm_log_analytics_workspace |
Log Analytics-Lösungen | Microsoft.OperationsManagement/solutions |
azurerm_log_analytics_solution |
Automation-Konto | Microsoft.Automation/automationAccounts |
azurerm_automation_account |
Mit Log Analytics verknüpfter Dienst | Microsoft.OperationalInsights/workspaces /linkedServices |
azurerm_log_analytics_linked_service |
Zusätzlich zur Bereitstellung der oben genannten Ressourcen bietet das Modul eine native Integration in die entsprechenden Richtlinienzuweisungen, um vollständige Richtlinienkonformität zu gewährleisten.
Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Verwaltungsressourcen.
Konnektivitätsressourcen
Das Modul ermöglicht die Bereitstellung von Netzwerktopologie- und Konnektivitätsressourcen aus der konzeptionellen Architektur der Azure-Zielzonen im aktuellen Abonnementkontext. Außerdem stellt es sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.
Dies ermöglicht die Bereitstellung mehrerer Hubnetzwerke basierend auf einer beliebigen Kombination aus herkömmlicher Azure-Netzwerktopologie (Hub-and-Spoke) und Virtual WAN-Netzwerktopologie (von Microsoft verwaltet).
Das Modul kann auch DDoS-Netzwerkschutz erstellen und mit virtuellen Netzwerken verknüpfen sowie zentralisierte öffentliche und private DNS-Zonen verwalten.
Hinweis
Wir empfehlen derzeit keinen DDoS-IP-Schutz in Azure-Zielzonen und empfehlen die Verwendung dieser Option nur unter bestimmten Umständen. Lesen Sie die Produktdokumentation Informationen zum Vergleich der Azure DDoS Protection-SKUs.
Herkömmliche Azure-Netzwerktopologie (Hub-and-Spoke)
Das Modul kann optional auch Hubnetzwerke basierend auf der herkömmlichen Azure-Netzwerktopologie (Hub-and-Spoke) bereitstellen.
Hinweis
Das Modul konfiguriert derzeit nur den Netzwerkhub und die abhängigen Ressourcen für das Konnektivitätsabonnement. Obwohl es eine Option zum Aktivieren von ausgehendem Peering virtueller Netzwerke von Hub zu Spoke gibt, müssen Benutzer dennoch das Peering von Spoke zu Hub weiterhin initiieren. Dies liegt an Einschränkungen bei der Art und Weise, in der der AzureRM-Anbieter ein bestimmtes Abonnement für die Bereitstellung als Ziel verwendet.
Wenn Sie Ressourcen basierend auf einer herkömmlichen Azure-Netzwerktopologie (Hub-and-Spoke) bereitstellen, werden durch das Modul je nach Konfiguration die folgenden Ressourcentypen bereitgestellt und verwaltet:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Ressourcengruppen | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Virtuelle Netzwerke | Microsoft.Network/virtualNetworks |
azurerm_virtual_network |
Subnetze | Microsoft.Network/virtualNetworks/subnets |
azurerm_subnet |
Gateways des virtuellen Netzwerks | Microsoft.Network/virtualNetworkGateways |
azurerm_virtual_network_gateway |
Azure Firewall-Instanzen | Microsoft.Network/azureFirewalls |
azurerm_firewall |
Öffentliche IP-Adressen | Microsoft.Network/publicIPAddresses |
azurerm_public_ip |
Virtuelles Netzwerk über Peerings | Microsoft.Network/virtualNetworks/virtualNetworkPeerings |
azurerm_virtual_network_peering |
Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Konnektivitätsressourcen.
Virtual WAN-Netzwerktopologie (von Microsoft verwaltet)
Das Modul kann optional auch Hubnetzwerke basierend auf der Virtual WAN-Netzwerktopologie (von Microsoft verwaltet) bereitstellen.
Hinweis
Aufgrund der unterschiedlichen Funktionen von Virtual WAN-Netzwerkressourcen gegenüber herkömmlichen Ressourcen ist das Peering für Virtual WAN-Spokes bei Verwendung dieser Funktion bidirektional.
Wenn Sie Ressourcen basierend auf einer Virtual WAN-Netzwerktopologie (von Microsoft verwaltet) bereitstellen, werden durch das Modul je nach Konfiguration die folgenden Ressourcentypen bereitgestellt und verwaltet:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Ressourcengruppen | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
Virtuelle WANs | Microsoft.Network/virtualWans |
azurerm_virtual_wan |
Virtuelle 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-Richtlinien | Microsoft.Network/firewallPolicies |
azurerm_firewall_policy |
Verbindungen mit virtuellem Hub | Microsoft.Network/virtualHubs/hubVirtualNetworkConnections |
azurerm_virtual_hub_connection |
Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Virtual WAN-Ressourcen.
DDoS Protection-Plan
Das Modul kann optional DDoS-Netzwerkschutz bereitstellen und bei Bedarf virtuelle Netzwerke mit dem Plan verknüpfen.
Hinweis
Aufgrund von Plattformeinschränkungen können DDoS Protection-Pläne nur für herkömmliche virtuelle Netzwerke aktiviert werden. Virtuelle Hubs werden derzeit nicht unterstützt.
Wichtig
Im Leitfaden zu Azure-Zielzonen wird empfohlen, DDoS-Netzwerkschutz zu aktivieren, um Ihre Azure-Plattform besser zu schützen. Aufgrund der mit dieser Ressource verbundenen Kosten ist diese Funktion im Terraform-Modul für Azure-Zielzonen deaktiviert, um unerwartete Kosten in produktionsfremden Bereitstellungen und in MVP-Bereitstellungen zu verhindern.
In Produktionsumgebungen sollte diese Funktion allerdings unbedingt aktiviert werden.
Wenn Sie die Bereitstellung von DDoS Protection-Planressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Ressourcengruppen | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
DDoS Protection-Pläne | Microsoft.Network/ddosProtectionPlans |
azurerm_network_ddos_protection_plan |
DNS
Das Modul kann optional private DNS-Zonen zur Unterstützung privater Endpunkte bereitstellen und sie mit virtuellen Hub/Spoke-Netzwerken verknüpfen. Benutzerseitig angegebene öffentliche und private DNS-Zonen können ebenfalls nach Bedarf bereitgestellt und verknüpft werden.
Wenn Sie die Bereitstellung von DNS-Ressourcen aktivieren, stellt das Modul je nach Konfiguration die folgenden Ressourcentypen bereit und verwaltet sie:
Resource | Azure-Ressourcentyp | Terraform-Ressourcentyp |
---|---|---|
Ressourcengruppen | Microsoft.Resources/resourceGroups |
azurerm_resource_group |
DNS-Zonen | Microsoft.Network/dnsZones |
azurerm_dns_zone |
Was ist eine private Azure DNS-Zone? | Microsoft.Network/privateDnsZones |
azurerm_private_dns_zone |
VNet-Verknüpfung für private DNS-Zone | Microsoft.Network/privatednszones/virtualnetworklinks |
azurerm_private_dns_zone_virtual_network_link |
Identitätsressourcen
Das Modul bietet eine Option zum Konfigurieren von Richtlinien im Zusammenhang mit der Zielzone für die Identitäts- und Zugriffsverwaltung. Außerdem stellt es sicher, dass das angegebene Abonnement in der richtigen Verwaltungsgruppe platziert wird.
Hinweis
Von dieser Funktion werden keine Ressourcen bereitgestellt. Wenn Sie Richtlinieneinstellungen im Zusammenhang mit der Identitätsverwaltungsgruppe aktualisieren möchten, verwenden Sie die Eingabevariable configure_identity_resources
.
Weitere Informationen zur Verwendung dieser Funktion finden Sie auf der Wiki-Seite Bereitstellen von Identitätsressourcen.
Erste Schritte
Die Anforderungen für die ersten Schritte mit dem Modul sind auf der Wiki-Seite Erste Schritte dokumentiert.
Zur Vereinfachung des Einstiegs wurde das Modul in der Terraform-Registrierung veröffentlicht. Sie können in Ihrem Code direkt darauf verweisen, wie im einfachen Beispiel weiter unten in diesem Artikel zu sehen. Wenn Sie terraform init
ausführen, werden das Modul und alle Abhängigkeiten automatisch heruntergeladen.
Die neuesten Modul- und Anbieterabhängigkeiten finden Sie in der Terraform-Registrierung auf der Registerkarte Abhängigkeiten.
Wichtig
Bei einigen Kombinationen der Versionen von Terraform und des AzureRM-Anbieters kann es zu bekannten Problemen kommen. Sie können einige bekannte Probleme beheben, indem Sie ein Upgrade auf die neuesten Terraform- und AzureRM-Anbieterversionen durchführen. Andere bekannte Probleme sind vorübergehende Fehler, die Sie in der Regel beheben können, indem Sie Ihre Bereitstellung erneut ausführen.
Unsere allgemeine Empfehlung lautet, bestimmte Versionen zu verwenden und vor Upgrades eingehende Tests durchzuführen.
Wenn Änderungen erforderlich sind, veröffentlichen wir neue Versionen des Moduls. Neue Versionen gewährleisten die Kompatibilität mit den neuesten Terraform- und AzureRM-Anbieterversionen. Weitere Informationen finden Sie in unserem Leitfaden zu Modulreleases.
Um die neuesten Features zu erhalten, stellen Sie sicher, dass die Modulversion auf die neueste Version festgelegt ist. Wenn Sie ein Upgrade auf eine höhere Version des Moduls durchführen, führen Sie terraform init -upgrade
aus.
Einfaches Beispiel
Mit diesem Beispielcode werden die empfohlenen Mindestvoraussetzungen für die Organisation von Verwaltungsgruppen und Abonnements aus der Referenzarchitektur auf Unternehmensebene erfüllt. Nachdem Sie dieses einfache Beispiel eingerichtet haben, können Sie damit beginnen, Ihre Bereitstellung anzupassen.
Tipp
Auch wenn root_parent_id
die einzige obligatorische Variable des Moduls ist, empfehlen wir ebenfalls, root_id
festzulegen. Wenn der Wert von root_id
geändert wird, wird eine vollständige erneute Bereitstellung aller vom Modul verwalteten Ressourcen gestartet, einschließlich der nachgeschalteten Abhängigkeiten.
Der folgende Code stellt eine einfache Anfangskonfiguration für Ihr main.tf
-Stammmodul dar:
# 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ächste Schritte
Das Terraform-Modul für das Cloud Adoption Framework auf Unternehmensebene bietet einen schnelleren Pfad zur Erstellung Ihrer Zielzonen auf Unternehmensebene. Darüber hinaus bietet es die Flexibilität zum Erweitern und Anpassen Ihrer Bereitstellung, während Sie gleichzeitig einen vereinfachten Ansatz für die Verwaltung der Konfiguration für die einzelnen Zielzonen aufrechterhalten.
Weitere Informationen finden Sie im Modul in der Terraform-Registrierung sowie in der Moduldokumentation auf GitHub. In der Dokumentation finden Sie weitere Beispiele und Tutorials zur Anpassung Ihrer Bereitstellung.
Bei HashiCorp Learn erfahren Sie, wie Sie das Terraform-Modul für Azure-Zielzonen bereitstellen. Von dort können Sie auch herausfinden, wie einige Teile des Moduls funktionieren.