Friends Stock - stock.adobe.com

Wie Sie Azure Landing Zones mit Terraform bereitstellen

Azure Landing Zones bieten eine skalierbare, sichere und standardisierte Grundlage für Cloud-Workloads. Mit Terraform lassen sie sich effizient bereitstellen und verwalten.

Azure Landing Zones sind optimal strukturierte Umgebungen, die den Best Practices von Microsoft für die Azure-Cloud-Architektur entsprechen. Sie bieten Skalierbarkeit und erleichtern die Einführung der Cloud, indem sie eine gut verwaltete Grundlage für Teams zur Ausführung ihrer Workloads bieten.

Wenn Sie Azure Landing Zones bereitstellen möchten, ist Terraform ein gutes Werkzeug dafür. Die in diesem Tutorial beschriebenen Schritte, einschließlich der Einrichtung und Authentifizierung von Terraform für Azure, helfen Ihnen dabei, eine gut verwaltete Grundlage für die Bereitstellung Ihrer Workloads zu schaffen.  Dieser Beitrag erläutert praxisnah, wie komplexe, aber gut verwaltete Landing Zones angelegt werden können.

Was sind Azure Landing Zones?

Azure Landing Zones bieten Skalierbarkeit und erleichtern die Einführung der Cloud. Sie bieten eine gut verwaltete Grundlage für Teams, um ihre Workloads auszuführen. Eine Landing Zone umfasst einen Standardsatz an Ressourcen und Konfigurationen für Sicherheit, Governance und Compliance.

Azure Landing Zones bieten mehrere wichtige Vorteile, die Sie nutzen können:

  • Skalierbarkeit: Azure Landing Zones sind so konzipiert, dass sie sich an die Anforderungen Ihres Unternehmens anpassen lassen. Dies ermöglicht eine einfache Erweiterung und Anpassung, wenn der eigene Cloud-Footprint wächst.
  • Sicherheit und Compliance: Integrierte Sicherheitskontrollen und Compliance-Richtlinien schützen Workloads und stellen sicher, dass sie den gesetzlichen Anforderungen entsprechen.
  • betriebliche Effizienz: Azure Landing Zones bieten eine standardisierte Umgebung, die die Komplexität und den Betriebsaufwand im Zusammenhang mit der Verwaltung mehrerer Cloud-Umgebungen reduziert.
  • Integration und Konnektivität: Ressourcen für die Verwaltung und Konnektivität von Landing Zones sorgen für die Integration zwischen Ressourcen, eine verbesserte Benutzererfahrung und die Einhaltung von Richtlinien.

Landing Zones gehen heute weit über die Bereitstellung einer Basisinfrastruktur hinaus. Sie bieten integrierte KI-Governance-Frameworks, die KI-Workloads sicher und regelkonform betreiben, sowie eine nahtlose Hybrid- und Multi-Cloud-Integration über Azure Arc, um Ressourcen auch außerhalb von Azure zentral zu verwalten. Zudem ermöglichen neue Policy-DINE-Funktionen (Dynamic Intent-based Enforcement) eine dynamische und kontextabhängige Durchsetzung von Sicherheits- und Compliance-Richtlinien. Erweiterte Netzwerk- und Konnektivitätsmodule sowie integrierte Monitoring und Cost Management Tools sorgen darüber hinaus für mehr Transparenz, Sicherheit und Effizienz im laufenden Betrieb.

Voraussetzungen

Bevor Sie mit der Bereitstellung von Azure Landing Zones mit Terraform beginnen, müssen Sie Terraform einrichten und authentifizieren.

Terraform installieren

Um Terraform zu installieren, suchen Sie auf der Download-Seite den für Ihr Betriebssystem geeigneten Download und extrahieren Sie die ausführbare Datei aus der ZIP-Datei. Öffnen Sie anschließend Ihr bevorzugtes Terminal in dem Verzeichnis, in das die Datei heruntergeladen wurde. Testen Sie dies, indem Sie den folgenden Befehl ausführen.

.\terraform --version
Test der Installation
Abbildung 1: Testen Sie die Installation von Terraform.

In diesem Beispiel wird Version 1.8.5 unter Windows ausgeführt, inzwischen ist Terraform 1.10.x aktuell

Terraform authentifizieren

In diesem Beispiel wird der AzureRM-Anbieter von Terraform verwendet, um Ressourcen in Azure zu konfigurieren. Erstellen Sie einen Dienstprinzipal und verwenden Sie diesen, um sich mit PowerShell bei Azure zu authentifizieren.

Connect-AzAccount
$sp = New-AzADServicePrincipal -DisplayName tf-demo -Role „Contributor“

Exportieren Sie anschließend mehrere Umgebungsvariablen in der Syntax Ihrer Shell für die Authentifizierung. Im Folgenden finden Sie die Syntax für PowerShell.

$env:ARM_CLIENT_ID       = $sp.AppId
$env:ARM_SUBSCRIPTION_ID = (Get-AzContext).Subscription.Id
$env:ARM_TENANT_ID       = (Get-AzContext).Tenant.Id
$env:ARM_CLIENT_SECRET   = $sp.PasswordCredentials.SecretText

Wenn Sie in einer Pipeline wie GitHub Actions arbeiten, speichern Sie diese Werte als Geheimnisse und exportieren Sie sie als Umgebungsvariablen unter Verwendung der entsprechenden Syntax.

Wenn diese Werte in Umgebungsvariablen gespeichert sind, findet der AzureRM-Anbieter sie und verwendet sie zur Authentifizierung bei Azure.

Einrichten einer Entwicklungsumgebung

Für die Entwicklung von Terraform-Konfigurationen wird Visual Studio Code als Editor empfohlen. Laden Sie das für Ihr Betriebssystem geeignete Installationsprogramm herunter und installieren Sie es. Öffnen Sie anschließend den Extensions Marketplace und suchen Sie nach Terraform. Für eine optimale Azure-Erfahrung installieren Sie sowohl die offizielle HashiCorp-Erweiterung als auch die Azure-Terraform-Erweiterung von Microsoft.

Installation von Erweiterungen
Abbildung 2: Installieren Sie die wichtigen Erweiterungen.

Vorteile der Verwendung von Terraform

Die Verwendung von Terraform oder einem anderen Infrastructure-as-Code-Tool bietet gegenüber einer grafischen Benutzeroberfläche wie dem Azure-Portal mehrere Vorteile:

  • Git-Integration: Terraform ermöglicht die Versionskontrolle, Zusammenarbeit und Automatisierung Ihrer Infrastrukturbereitstellungen innerhalb einer gehosteten Git- und CI/CD-Bereitstellung.
  • Wiederholbarkeit: Terraform-Konfigurationen können in verschiedenen Umgebungen wiederverwendet werden. Dies gewährleistet Konsistenz und verringert die Fehlerwahrscheinlichkeit.
  • Erweiterbarkeit: Die modulare Architektur von Terraform ermöglicht die Integration mit anderen Tools und Diensten, wodurch seine Funktionalität erweitert wird.

Mit Terraform können Sie auch komplexe Ressourcen skalieren und standardisieren:

  • IAM-Kontrollen: Mit Terraform können Sie IAM-Kontrollen programmgesteuert definieren und durchsetzen und so skalierbare Sicherheitsrichtlinien und Compliance für Ihren gesamten Azure-Mandanten gewährleisten.
  • Durchsetzung von Richtlinien: Mit Terraform können Sie Richtlinien über viele Abonnements und Verwaltungsgruppen hinweg durchsetzen und so konsistente Sicherheits- und Compliance-Praktiken gewährleisten.
  • verwaltete Ressourcen: Terraform vereinfacht die Verwaltung von Ressourcen für Connectivity Landing Zones und bietet eine bessere Integration, eine verbesserte Benutzererfahrung und eine garantierte Richtlinienkonformität.

Schreiben der Terraform-Konfiguration

Um eine Azure Landing Zone mit Terraform bereitzustellen, verwenden Sie das offizielle Microsoft-Terraform-Modul für Azure Landing Zones und führen Sie die folgenden Schritte aus.

Schritt 1

Öffnen Sie einen leeren Ordner in VS Code.

Schritt 2

Erstellen Sie eine neue Datei mit dem Namen main.tf. Dies ist der Standarddateiname für Terraform-Konfigurationen, Sie können jedoch jeden Dateinamen verwenden, der die Erweiterung TF hat.

Schritt 3

Definieren Sie den Terraform-Block in der Datei main.tf. Sie müssen den AzureRM-Anbieter in der Mindestversion 3.74 verwenden, da dies die Mindestanforderung für das Landing-Zone-Modul ist.

terraform {
  required_providers {
    azurerm = {
      source  = „hashicorp/azurerm“
      version = „>= 3.74.0“
    }
  }
}

Die Syntax >= ist eine Versionsbeschränkung, die größer als oder gleich bedeutet. Dies gibt an, dass Sie die Version 3.74.0 oder höher anfordern. Die aktuelle Version ist 4.x.

Schritt 4

Deklarieren Sie den Anbieter selbst mit einem Anbieterblock.

provider „azurerm“ {
  features {}
}

Wenn Sie anbieterspezifische Einstellungen vornehmen müssen, tun Sie dies an dieser Stelle. Für diese Konfiguration müssen Sie jedoch keine Änderungen vornehmen.

Schritt 5

Definieren Sie einen Datenblock.

data ‚azurerm_client_config‘ „core“ {}

Mit einem Datenblock in Terraform können Sie Daten aus der angegebenen Ressource dynamisch abrufen. In diesem Fall erhalten Sie Informationen über die Provider-Konfiguration, die Sie später verwenden werden.

Schritt 6

Rufen Sie das Landing-Zone-Modul auf. Verwenden Sie für dieses Beispiel die Standardkonfiguration, um eine Vorstellung davon zu bekommen, wie es aussehen wird.

module „enterprise_scale“ {
source  = „Azure/caf-enterprise-scale/azurerm“
  version = „~> 5.2“
  default_location = „West US“
  providers = {
    azurerm              = azurerm
    azurerm.connectivity = azurerm
    azurerm.management   = azurerm
  }
 
root_parent_id = data.azurerm_client_config.core.tenant_id
  root_id        = „myorg“
  root_name      = „My Organization“
}

In diesem Beispiel wird das Modul aufgerufen und die Version mit source und version angegeben. In diesem Fall weist die Versionsbeschränkung Terraform an, nur Version 5.2 oder eine neuere Version 5.x, jedoch nicht Version 6 zu verwenden. Die aktuelle Modulversion ist 6.x mit verbesserter Bicep-Integration, erweiterten Policy-Packs und KI-basierten Governance-Empfehlungen.

Es legt den Standardstandort auf West US fest, übergibt die erforderlichen Informationen über die Anbieter und legt dann grundlegende Metadaten mit root_parent_id, root_id und root_name fest. Es wird empfohlen, aussagekräftigere Namen als in diesen Beispielen zu verwenden.

Bereitstellen der Terraform-Konfiguration

Nachdem Sie Ihre Konfiguration eingerichtet haben, müssen Sie sie bereitstellen.

Schritt 1

Initialisieren Sie Terraform mit terraform init.

Start von Terraform
Abbildung 3: Starten Sie Terraform.

Sie erhalten eine Vielzahl von Ausgaben, die darauf hinweisen, dass Terraform die Umgebung initialisiert. Der Vorgang sollte mit Folgendem enden.

Prüfung des Outputs
Abbildung 4: Überprüfen Sie den Output von Terraform.

Schritt 2

Führen Sie terraform validate aus, um einige Tests vor der Bereitstellung der Konfiguration durchzuführen. Dieser Schritt ist nicht erforderlich, gibt Ihnen jedoch Sicherheit, bevor Sie einen Plan ausführen.

Test von Terraform
Abbildung 5: Testen Sie Terraform, bevor Sie die Konfiguration bereitstellen.

Schritt 3

Führen Sie terraform plan aus, um anzuzeigen, was erstellt werden soll. Da dieses Modul sehr komplex ist, werden viele Ressourcen erstellt. Das Folgende ist der letzte aufgeführte Eintrag.

Liste der zu erstellenden Ressourcen
Abbildung 6: In dem Eintrag sind die Ressourcen gelistet, die erstellt werden.

Beachten Sie, dass für jede zu erstellende Ressource ein Pluszeichen angezeigt wird.

Die letzte Zeile gibt an, dass 233 Elemente erstellt, null geändert und null gelöscht werden. Wenn Sie diesen Plan nach der Bereitstellung erneut ausführen und anschließend die Konfiguration bearbeiten, werden wahrscheinlich geänderte Ressourcen angezeigt.

Schritt 4

Führen Sie terraform apply aus und geben Sie yes ein, wenn Sie zur Bestätigung des Plans zur Anwendung dieser Konfiguration aufgefordert werden.

Haben Sie etwas Geduld, da die Bereitstellung einige Zeit in Anspruch nimmt.

Nach Abschluss der Bereitstellung sollte die folgende Meldung angezeigt werden.

erfolgreiche Bereitstellung
Abbildung 7: Diese Nachricht zeigt die erfolgreiche Bereitstellung an.

Anzeigen der Ressourcen in Azure

Sie finden die Verwaltungsgruppen und Richtlinien im Abschnitt Verwaltungsgruppe (Management Group) im Azure-Portal.

Seite Verwaltungsgruppe
Abbildung 8: Suchen Sie die Seite Verwaltungsgruppe.

Klicken Sie auf den Link Meine Organisation (My Organization), erweitern Sie den Abschnitt Governance auf der linken Seite und klicken Sie dann auf Richtlinie (Policy). Wechseln Sie im Bildschirm Richtlinie zu Compliance.

Hier sehen Sie die Richtlinien, die durch die Standardkonfiguration der Landing Zone angewendet werden. Im Folgenden wird der Speicherort der zensierten Richtlinien angezeigt.

Speicherung zensierter Richtlinien
Abbildung 9: Hier werden zensierte Richtlinien gespeichert.

Änderungen an der Konfiguration vornehmen

Die Standardkonfiguration ist für Ihren Produktions-Workload wahrscheinlich nicht sinnvoll. Lesen Sie unbedingt die Moduldokumentation durch, um die Landing Zone genau nach Ihren Wünschen bereitzustellen.

Dort finden Sie umfangreiche Beispiele, darunter die Bereitstellung von Konnektivitätsressourcen, benutzerdefinierten Richtlinien und Identitätsressourcen. Da es sich um ein Modul mit vollem Funktionsumfang handelt, sind viele dieser Ressourcen so einfach wie eine einzige zusätzliche Zeile in Ihrer Konfiguration und die anschließende erneute Ausführung von Terraform.

Löschen der Ressourcen

Wenn Sie diese Ressourcen zu Testzwecken bereitstellen und die Bewertung der Bereitstellung abgeschlossen haben, können Sie die bereitgestellten Ressourcen mit terraform destroy löschen. Dadurch werden nur die von Ihnen erstellten Ressourcen gelöscht.

Bereitstellung von Azure Landing Zones

Azure Landing Zones sind vorgefertigte, skalierbare Umgebungen, die Best Practices für Sicherheit, Governance und Compliance in der Cloud umsetzen. Sie bilden eine standardisierte Grundlage für Workloads und erleichtern den Einstieg in Azure. Mit Terraform lassen sich diese Landing Zones effizient bereitstellen, versionieren und automatisieren. Aktuelle Module unterstützen zudem KI-Governance, Multi-Cloud-Integration über Azure Arc sowie dynamische Richtliniendurchsetzung und ermöglichen so eine sichere, erweiterbare und zukunftsfähige Cloud-Architektur.

Erfahren Sie mehr über Cloud-Software