0Pricing
Azure Fundamentals · Lektion

Terraform in Azure

Konfigurieren Sie den AzureRM-Terraform-Provider, schreiben Sie einen einfachen Infrastrukturplan und verstehen Sie, wann Terraform gegenüber nativen ARM- oder Bicep-Tools vorzuziehen ist.

Terraform in Azure ist eine kostenlose Azure Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Azure Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was ist Terraform und warum Azure?

Terraform ist ein von HashiCorp entwickeltes Open-Source-Tool für Infrastructure as Code. Anders als Bicep ist Terraform cloudunabhängig – eine einzige Terraform-Codebasis kann Ressourcen gleichzeitig in Azure, AWS, GCP und vielen anderen Providern verwalten. In Azure verwendet Terraform den AzureRM-Provider, um mit der ARM-API zu interagieren. Dadurch ist Terraform eine beliebte Wahl für Multi-Cloud-Organisationen.

Der AzureRM-Terraform-Provider

Der AzureRM-Provider ist ein Plugin, das Terraform herunterlädt und verwendet, um Terraform-Konfigurationen in Aufrufe der ARM-API zu übersetzen. Er wird von HashiCorp und Microsoft gepflegt und ist die offizielle Möglichkeit, Azure-Ressourcen mit Terraform zu verwalten. Konfigurieren Sie den Provider mit Ihrer Abonnement-ID und der Authentifizierungsmethode, und führen Sie anschließend terraform init aus, um ihn herunterzuladen.

# main.tf — configure the AzureRM provider
terraform {
  required_providers {
    azurerm = {
      source  = 'hashicorp/azurerm'
      version = '~> 3.0'
    }
  }
}

provider 'azurerm' {
  features {}
  subscription_id = var.subscription_id
}

Dateistruktur von Terraform

Ein typisches Azure-Terraform-Projekt ist auf mehrere .tf-Dateien verteilt: main.tf enthält Ressourcendeklarationen, variables.tf definiert Eingabevariablen, outputs.tf definiert Ausgabewerte und terraform.tfvars stellt Variablenwerte für eine bestimmte Umgebung bereit. Terraform lädt automatisch alle .tf-Dateien im aktuellen Verzeichnis. Die Aufteilung in mehrere Dateien dient daher ausschließlich der besseren Lesbarkeit.

# variables.tf
variable 'resource_group_name' {
  description = 'Name of the resource group'
  type        = string
  default     = 'my-rg'
}

variable 'location' {
  description = 'Azure region'
  type        = string
  default     = 'eastus'
}

Azure-Ressourcen deklarieren

In Terraform deklarieren Sie Azure-Ressourcen mithilfe von resource-Blöcken. Der Blocktyp ist resource, gefolgt vom AzureRM-Ressourcentyp (z. B. 'azurerm_resource_group') und einem lokalen Namen, über den Sie innerhalb der Konfiguration auf die Ressource verweisen. Eigenschaftsnamen verwenden in Terraform snake_case statt der in ARM-JSON verwendeten Schreibweisen camelCase oder PascalCase.

# main.tf — create a resource group and storage account
resource 'azurerm_resource_group' 'main' {
  name     = var.resource_group_name
  location = var.location
}

resource 'azurerm_storage_account' 'storage' {
  name                     = 'mystorageaccount'
  resource_group_name      = azurerm_resource_group.main.name
  location                 = azurerm_resource_group.main.location
  account_tier             = 'Standard'
  account_replication_type = 'LRS'

  tags = {
    environment = 'dev'
  }
}

Der Terraform-Workflow: Init, Plan, Apply

Der zentrale Terraform-Workflow umfasst drei Schritte. terraform init lädt den AzureRM-Provider herunter und richtet das Backend ein. terraform plan vergleicht Ihre Konfiguration mit dem aktuellen Zustand und zeigt eine Differenz der Ressourcen an, die erstellt, geändert oder zerstört werden – ähnlich wie ARM what-if. terraform apply führt den Plan aus und aktualisiert Azure so, dass es Ihrer Konfiguration entspricht.

# Step 1: Initialise the project and download providers
terraform init

# Step 2: Preview changes (shows + create, ~ update, - destroy)
terraform plan -out=tfplan

# Step 3: Apply the plan
terraform apply tfplan

# Destroy all managed resources
terraform destroy

Terraform-State

Terraform verwaltet eine State-Datei (terraform.tfstate), die den aktuellen Zustand aller verwalteten Ressourcen erfasst und diese Ihrer Konfiguration zuordnet. Dadurch kann Terraform Abweichungen zwischen der Konfiguration und den tatsächlich in Azure vorhandenen Ressourcen erkennen. In Teamumgebungen sollten Sie den State remote in einem Azure Storage Account (einem Terraform-Backend) speichern, damit alle Teammitglieder dieselbe State-Datei verwenden.

# Configure remote state in Azure Blob Storage
terraform {
  backend 'azurerm' {
    resource_group_name  = 'tfstate-rg'
    storage_account_name = 'tfstateaccount'
    container_name       = 'tfstate'
    key                  = 'prod.terraform.tfstate'
  }
}

Authentifizierung bei Azure in Terraform

Terraform unterstützt mehrere Authentifizierungsmethoden für Azure. Verwenden Sie während der lokalen Entwicklung az login (Azure-CLI-Authentifizierung) – Terraform übernimmt die Anmeldeinformationen automatisch. Verwenden Sie in CI/CD-Pipelines einen Service Principal mit einem Clientschlüssel oder Zertifikat, der über Umgebungsvariablen übergeben wird. Verwenden Sie für in Azure gehostete Agents oder VMs eine Managed Identity, um eine besonders sichere Authentifizierung ohne Geheimnisse zu ermöglichen.

# Option 1: Azure CLI (local dev)
az login
terraform plan

# Option 2: Service principal via environment variables
export ARM_CLIENT_ID='00000000-0000-0000-0000-000000000000'
export ARM_CLIENT_SECRET='your-client-secret'
export ARM_SUBSCRIPTION_ID='00000000-0000-0000-0000-000000000000'
export ARM_TENANT_ID='00000000-0000-0000-0000-000000000000'
terraform plan

Terraform-Module zur Wiederverwendung

Wie Bicep-Module ermöglichen es Ihnen auch Terraform-Module, Infrastrukturmuster zu kapseln und wiederzuverwenden. Ein Modul ist ein Verzeichnis, das .tf-Dateien enthält. Sie verweisen mit einem module-Block darauf, übergeben Eingaben über variables und verwenden Ausgaben. Die Terraform Registry enthält Hunderte von Community- und verifizierten Azure-Modulen, die Sie direkt verwenden können, beispielsweise das AzureRM-Netzwerkmodul.

# Use a module from the Terraform Registry
module 'vnet' {
  source  = 'Azure/vnet/azurerm'
  version = '4.0.0'

  resource_group_name = azurerm_resource_group.main.name
  vnet_location       = azurerm_resource_group.main.location
  use_for_each        = true
  address_space       = ['10.0.0.0/16']
  subnet_prefixes     = ['10.0.1.0/24', '10.0.2.0/24']
  subnet_names        = ['web', 'app']
}

Wann Sie Terraform statt Bicep wählen sollten

Wählen Sie Bicep, wenn Ihre Organisation ausschließlich Azure verwendet und eine möglichst enge Integration mit neuen Azure-Funktionen wünscht (Bicep unterstützt neue Ressourcentypen bereits am ersten Tag). Wählen Sie Terraform, wenn Sie Ressourcen über mehrere Cloudanbieter hinweg verwalten, das umfangreiche Ökosystem von Community-Modulen benötigen oder die HCL-Syntax und die HashiCorp-Toolchain bevorzugen. Beide Lösungen eignen sich für reine Azure-Bereitstellungen – häufig entscheidet die Präferenz der Organisation.

Vorhandene Ressourcen importieren

Wenn Ressourcen bereits in Azure vorhanden waren, bevor Sie Terraform eingesetzt haben, können Sie sie mit terraform import unter die Verwaltung von Terraform stellen. Dieser Befehl ruft den aktuellen Zustand der Ressource ab und fügt ihn der Terraform-State-Datei hinzu. Nach dem Import müssen Sie den entsprechenden Konfigurationsblock manuell erstellen, damit er der importierten Ressource entspricht. Führen Sie anschließend terraform plan aus, um zu bestätigen, dass keine Unterschiede vorhanden sind.

# Import an existing resource group into Terraform state
terraform import \
  azurerm_resource_group.main \
  '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/existing-rg'

# Terraform 1.5+ supports import blocks in configuration
import {
  to = azurerm_resource_group.main
  id = '/subscriptions/00000000.../resourceGroups/existing-rg'
}

Best Practices für Terraform in Azure

Befolgen Sie für Terraform in Azure diese Best Practices: Speichern Sie den State remote in Azure Blob Storage und aktivieren Sie State Locking, verwenden Sie Workspaces oder separate State-Dateien für unterschiedliche Umgebungen, übernehmen Sie niemals Geheimnisse in die Quellcodeverwaltung – verwenden Sie stattdessen Azure-Key-Vault-Datenquellen –, legen Sie Provider-Versionen fest, um Breaking Changes zu vermeiden, und führen Sie Terraform in einer CI/CD-Pipeline (Azure Pipelines oder GitHub Actions) mit Genehmigungsstufen für Pläne aus.

Schnelltest

Testen Sie Ihr Verständnis der Konzepte aus Microsoft Azure Fundamentals (AZ-900) in dieser Lektion.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: Terraform ist ein cloudunabhängiges IaC-Tool, das den AzureRM-Provider zur Verwaltung von Azure-Ressourcen verwendet. Der Workflow aus Init, Plan und Apply ermöglicht sichere und vorhersehbare Bereitstellungen, und ein Remote State in Azure Blob Storage ist für die Zusammenarbeit im Team unverzichtbar. Als Nächstes beschäftigen wir uns mit dem Erstellen von App-Service-Plänen und Web-Apps.

Häufig gestellte Fragen

Ist die Lektion „Terraform in Azure“ kostenlos?

Ja — der vollständige Text von „Terraform in Azure“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Azure Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Terraform in Azure“?

Konfigurieren Sie den AzureRM-Terraform-Provider, schreiben Sie einen einfachen Infrastrukturplan und verstehen Sie, wann Terraform gegenüber nativen ARM- oder Bicep-Tools vorzuziehen ist. Du übst Azure Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Azure Fundamentals zu starten?

Keine Vorkenntnisse erforderlich. Azure Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Terraform in Azure“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Azure Fundamentals-Lektion Code schreiben und ausführen?

Ja. Jede Azure Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. So funktioniert Azure Resource Manager
  2. ARM-Vorlagen schreiben
  3. Bicep: Moderne IaC für Azure
  4. Terraform in Azure
← Zurück zu Azure Fundamentals