0Pricing
Terraform Infrastructure as Code · Lektion

Schleifen mit `for_each` und `count` verwenden

Lernen Sie, mit `count` und `for_each` mehrere Instanzen einer Ressource oder eines Moduls bereitzustellen und dabei Sammlungen und Maps effizient zu verarbeiten.

Schleifen mit `for_each` und `count` verwenden ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 1 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 Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Einführung in Schleifen

Bei der Verwaltung von Infrastruktur mit Terraform müssen Sie häufig mehrere ähnliche Ressourcen erstellen. Stellen Sie sich vor, Sie benötigen 10 Webserver oder 5 Datenbankinstanzen. Dieselben Codeblöcke wiederholt zu schreiben, wäre mühsam und fehleranfällig!

In dieser Lektion lernen Sie zwei leistungsstarke Terraform-Funktionen kennen: count und for_each. Sie helfen Ihnen dabei, mehrere Ressourcen effizient bereitzustellen und Ihre Konfigurationen übersichtlich und skalierbar zu halten.

Warum `count` und `for_each` verwenden?

Die Verwendung von Schleifen wie count und for_each bietet wesentliche Vorteile:

  • Weniger Duplikate: Schreiben Sie Infrastrukturcode einmal und verwenden Sie ihn wieder.
  • Bessere Lesbarkeit: Ihre Konfigurationen werden übersichtlicher und leichter verständlich.
  • Skalierbarkeit: Passen Sie die Anzahl der Ressourcen einfach an, indem Sie einen einzelnen Wert oder eine Sammlung ändern.
  • Konsistenz: Stellen Sie sicher, dass alle ähnlichen Ressourcen identisch konfiguriert sind.

`count` für einfache Wiederholungen

Das Metaargument count eignet sich ideal, wenn Sie mehrere nahezu identische Instanzen einer Ressource oder eines Moduls erstellen müssen. Sie geben eine Ganzzahl an, und Terraform erstellt entsprechend viele Instanzen.

Jede mit count erstellte Instanz erhält einen Index, beginnend bei 0 bis einschließlich count - 1. Sie können auf diesen Index mit count.index zugreifen.

Beispiel: Mehrere EC2-Instanzen mit `count`

Stellen wir drei identische AWS-EC2-Instanzen bereit. Beachten Sie, wie count.index verwendet wird, um jedem Server einen eindeutigen Namen zu geben.

provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "web_server" {
  count         = 3
  ami           = "ami-053b0dcd10dcf2f56" # Ubuntu Server 20.04 LTS
  instance_type = "t2.micro"
  tags = {
    Name = "WebServer-${count.index}"
  }
}

`count.index` verstehen

Im vorherigen Beispiel wurde ${count.index} für jede Instanz automatisch zu 0, 1 bzw. 2 aufgelöst. Dadurch können Sie eindeutige Bezeichner erstellen oder Eigenschaften für jede Instanz anpassen.

Ohne count.index hätten alle drei Server exakt dasselbe „Name“-Tag, was in AWS zu Verwirrung oder Problemen führen könnte.

`for_each` kennenlernen

Während sich count hervorragend für einfache Wiederholungen eignet, bietet for_each mehr Flexibilität. Es iteriert über eine Menge von Zeichenfolgen oder eine Zuordnung von Zeichenfolgen und erstellt für jedes Element eine Instanz.

for_each ist ideal, wenn Sie Ressourcen mit unterschiedlichen Konfigurationen verwalten müssen oder die Anzahl der Ressourcen durch eine nicht numerische Sammlung bestimmt wird (z. B. eine Liste von Umgebungsnamen oder eine Zuordnung von Benutzereinstellungen).

Beispiel: `for_each` mit einer Menge

Hier erstellen wir drei S3-Buckets, die jeweils nach einem Element unserer for_each-Menge benannt sind. Mit each.value greifen wir auf das aktuelle Element der Iteration zu.

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "app_buckets" {
  for_each = toset(["prod-app-data", "dev-app-logs", "test-app-assets"])
  bucket   = each.value
  acl      = "private"
  tags = {
    Environment = split("-", each.value)[0]
  }
}

Beispiel: `for_each` mit einer Zuordnung

Mit einer Zuordnung können Sie komplexere, eindeutige Konfigurationen für jede Ressource definieren. Hier erstellen wir S3-Buckets mit unterschiedlichen Einstellungen für die Versionierung, die auf den Umgebungsschlüsseln basieren.

Auf den Schlüssel greifen Sie mit each.key und auf den Wert mit each.value zu.

provider "aws" {
  region = "us-east-1"
}

resource "aws_s3_bucket" "configured_bucket" {
  for_each = {
    production = { name = "prod-data-bucket", versioning = true }
    development = { name = "dev-logs-bucket", versioning = false }
  }
  bucket        = each.value.name
  acl           = "private"
  versioning {
    enabled = each.value.versioning
  }
  tags = {
    Environment = each.key
  }
}

`count` vs. `for_each`: die richtige Wahl

Wann sollten Sie welche Variante verwenden?

  • count verwenden: Für einfache numerische Iterationen und zum Erstellen identischer Ressourcen, bei denen vor allem die Anzahl maßgeblich ist. Diese Variante eignet sich, wenn Sie lediglich einen Index zur Unterscheidung benötigen.
  • for_each verwenden: Für Iterationen über komplexe Sammlungen (Mengen oder Zuordnungen), wenn Ressourcen eindeutige Bezeichner oder aus den Sammlungselementen abgeleitete Eigenschaften benötigen. Diese Variante wird im Allgemeinen bevorzugt, wenn jede Instanz einen eindeutigen logischen Bezeichner besitzt.

Schnelltest: Schleifen

Stellen Sie sich vor, Sie müssen für jedes Team in Ihrer Organisation einen S3-Bucket erstellen, wobei jeder Bucket eine vom jeweiligen Team festgelegte Aufbewahrungsrichtlinie benötigt.

Rückblick: Effizientes Erstellen von Ressourcen

Sehr gut! Sie haben gelernt, wie Sie count und for_each nutzen, um Ihre Terraform-Konfigurationen dynamischer und effizienter zu gestalten.

  • count dient zur einfachen numerischen Wiederholung identischer Ressourcen. Mit count.index können Sie diese unterscheiden.
  • for_each dient zur Iteration über Mengen oder Zuordnungen und erstellt unterschiedliche Ressourcen mit eindeutigen Eigenschaften unter Verwendung von each.key und each.value.

Diese Konstrukte sind grundlegend für die Verwaltung skalierbarer und wartbarer Infrastruktur als Code!

Häufig gestellte Fragen

Ist die Lektion „Schleifen mit `for_each` und `count` verwenden“ kostenlos?

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

Was lerne ich in „Schleifen mit `for_each` und `count` verwenden“?

Lernen Sie, mit `count` und `for_each` mehrere Instanzen einer Ressource oder eines Moduls bereitzustellen und dabei Sammlungen und Maps effizient zu verarbeiten. Du übst Terraform Infrastructure as Code 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 Terraform Infrastructure as Code zu starten?

Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code 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 1 von 4.

Wie lange dauert die Lektion „Schleifen mit `for_each` und `count` verwenden“?

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 Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?

Ja. Jede Terraform Infrastructure as Code-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. Schleifen mit `for_each` und `count` verwenden
  2. Integrierte Terraform-Funktionen
  3. Bedingte Ausdrücke und Splat-Ausdrücke
  4. Dynamische Blöcke für verschachtelte Konfiguration
← Zurück zu Terraform Infrastructure as Code