Wie man eine Schleife in Terraform macht

Wie man eine Schleife in Terraform macht
Terraform bietet ein deklaratives Sprachmodell an. Dies macht es zwar sehr einfach und effizient, Ressourcen zu definieren, aber es kann einige grundlegende Merkmale fehlen, die für den täglichen Betrieb nützlich sind.

Zum Beispiel unterstützen spezifische deklarative Sprachen den Kontrollfluss nicht wie Schleifen. Wenn Sie sich daher wiederholt ein Stück Code erstellen müssen, müssen Sie standardmäßig kopieren und einfügen. Dies ist keine sehr effiziente Methode für einen Entwickler.

Terraform versteht dies und bietet einige Funktionen, die bei Funktionen helfen, z. B. Bedingungen und Schleifen. In diesem Artikel lernen Sie, wie Sie die Graf, for_each und für Ausdrücke in Terraform verwenden.

Die Grundlagen

Terraform bietet drei Hauptstrukturen bei der Arbeit mit Schleifen. Diese beinhalten:

  1. Zählen
  2. Für jede
  3. Für

Lassen Sie uns verstehen, wie Sie jede dieser Schleifenkonstrukte verwenden.

Grafparameter

Der Ressourcenblock in Terraform definiert und verwaltet hauptsächlich ein einzelnes Objekt in der Cloud. Möglicherweise müssen Sie jedoch mehrere Objekte erstellen oder verwalten, ohne jeden Block für jedes Objekt zu erstellen. Wenn Sie dies tun.

Eine Möglichkeit, dies zu erreichen, ist die Verwendung des Zählmeta-Arguments. Wenn Sie einen Ressourcenblock definieren, der den Count -Parameter mit der gesamten Anzahl enthält, führt Terraform die Aktionen auf die angegebene Anzahl von Ressourcen aus.

Grundnutzung

Der Count-Parameter, auch als Meta-Argument bezeichnet, kann in den Ressourcen- oder Modulblöcken verwendet werden.

Es akzeptiert eine Ganzzahl oder eine ganze Zahl und führt die angegebenen Aktionen in den vielen ausgewählten Instanzen aus. Wenn Sie beispielsweise die Anzahl auf 5 auf einem Ressourcenblock festlegen, der S3 -Eimer erstellt, erstellt Teraform fünf S3 -Bucket -Instanzen.

Terraform erzeugt jedoch ein einzigartiges Infrastrukturobjekt für jedes Element. Daher erhält jeder Element CRUD -Operationen getrennt.

Das folgende Beispiel zeigt, wie der Count -Parameter in Terraform verwendet wird:

Terraform
fordert_providers
AWS =
Source = "Hashicorp/AWS"
Version = "-> 3.27 "


fordern_version = "> = 0.12 "

Anbieter "AWS"
Profil = "Standard"
Region = "US-East-1"

Ressource "aws_instance" "web_server"
AMO = "AMI-234C45E2"
instance_type = "t1.Mikro"
count = 3
Tags =
Name = "Webserver Version: $ count.Index"

Der obige Beispielcode erstellt drei AWS -Instanzen vom Typ t1.Mikro. Wir verwenden auch die Count -Methode, um Tags mit der Anzahl der Instanzen zu erstellen.

Mit dem Indexattribut können Sie die Konfiguration für jedes Element ändern. Der Count -Index ist ein eindeutiger Wert, der jede Instanz beginnt, die bei 0 beginnt.

Im Gegensatz zu den meisten Terraform-Meta-Argumenten muss der Wert des Zählparameters vorher bekannt sein.

Für den Parameter für_ach

Der Parameter for_each ähnelt dem Zählargument eng. Sie können es mit einem Ressourcen- und Modulblock verwenden.

Grundnutzung

Der Parameter for_each akzeptiert eine Reihe von Zeichenfolgen oder eine Karte. Anschließend erzeugt es eine bestimmte Instanz für jedes Element in der Sammlung. Ähnlich wie die Anzahl verfügt jedes Element über eine eindeutige Objektinfrastruktur -ID, die es Terraform ermöglicht, CRUD -Operationen einzeln auf einem bestimmten Objekt auszuführen.

Das folgende Snippet zeigt, wie Sie das für das Erstellen von FOR_EACH -Elementen verwenden, um mehrere Benutzer zu erstellen:

Ressource "AWS_IAM_USER" "Web-Manager"
for_each = toset (["John", "Lucy", "Harley", "David"])
Name = jeweils.Taste

Das vorherige Beispiel zeigt an. Betrachten Sie den unten angegebenen Code, um eine Karte zu verwenden:

for_each =
Gruppe = "Web"
gruppe_b = "db"

Name = jeweils.Taste
Position = jeweils.Wert

Für Parameter

Der für den Loop -Parameter unterscheidet sich nicht sehr vom für den Betrieb in den meisten Programmiersprachen. Sie können eine Liste von Elementen überschreiten.

Angenommen, Sie haben eine Liste von Benutzern und möchten die Benutzernamen in Großbuchstaben umwandeln. In solchen Fall können Sie eine für die Schleife verwenden:

Benutzernamen = Tolist (["Benutzername1", "Benutzername2", Benutzername3])
[Foriinusernamen.Liste: Obere (s)]

Der vorherige Code erweitert die Elemente in der Liste und konvertiert jeweils in Großbuchstaben. Erfahren Sie mehr über Terraform für Ausdrücke in der Dokumentation.

Abschluss

Diese Anleitung gibt Ihnen die Grundlagen für die Durchführung von Schleifenoperationen in Terraform unter Verwendung von Count, for_each und für Ausdrücke. Wir hoffen, dass Sie die Beispiele mit den drei Parametern hilfreich gefunden haben. Weitere Tipps und Informationen finden Sie unter Linux Tipp.