module ·
source ·
variables ·
outputs ·
locals ·
module registry
Module sind die Grundlage für wiederverwendbare, wartbare und testbare Terraform-Infrastrukturen. Sie ermöglichen die Organisation von Code in logischen Einheiten.
Module sind Container für zusammengehörige Ressourcen, die gemeinsam konfiguriert werden. Sie fördern Wiederverwendbarkeit, Wartbarkeit und Testbarkeit der Infrastruktur.
| Datei | Beschreibung |
|---|---|
| main.tf | Hauptkonfiguration der Ressourcen |
| variables.tf | Eingabevariablen (Inputs) des Moduls |
| outputs.tf | Ausgabewerte (Outputs) des Moduls |
| README.md | Dokumentation für die Benutzung |
| versions.tf | Provider- und Terraform-Versionen |
Modulnutzung ermöglicht die Wiederverwendung von Modulen in verschiedenen Konfigurationen. Ein Modul wird als Block module deklariert und kann mehrfach instanziiert werden.
count oder for_each mit Modulen, um mehrere Instanzen eines Moduls zu erstellen – z.B. für mehrere Regionen oder Umgebungen.
Variablen sind die Eingaben eines Moduls. Sie ermöglichen die Parametrisierung des Moduls und machen es für verschiedene Umgebungen und Anwendungsfälle nutzbar.
| Typ | Beschreibung | Beispiel |
|---|---|---|
| string | Text | "t3.micro" |
| number | Zahl | 3 |
| bool | Wahrheitswert | true |
| list | Liste von Werten | ["a", "b", "c"] |
| map | Schlüssel-Wert-Paare | { key = "value" } |
| object | Strukturierte Daten | { name = "test", age = 30 } |
| tuple | Liste mit definierten Typen | ["a", 1, true] |
sensitive für Passwörter oder Schlüssel, damit diese nicht in Logs oder im Plan ausgegeben werden. Verwenden Sie validation-Blöcke für Eingabevalidierung.
Outputs sind die Werte, die ein Modul nach seiner Ausführung bereitstellt. Sie ermöglichen die Weitergabe von Informationen an das übergeordnete Modul oder an andere Module.
outputs.tf. Nutzen Sie sensitive für sicherheitsrelevante Werte, damit diese nicht im Klartext im Plan erscheinen.
Locals sind lokale Werte innerhalb eines Moduls, die für Berechnungen, Kombinationen oder Abkürzungen verwendet werden. Sie helfen, redundante Ausdrücke zu vermeiden.
Module Registry ist der zentrale Ort für öffentliche und private Terraform-Module. Das Versioning ermöglicht stabile und kontrollierte Updates.
| Quelle | Format | Beispiel |
|---|---|---|
| Lokal | ./pfad | ./modules/vpc |
| Terraform Registry | namespace/name/provider | terraform-aws-modules/vpc/aws |
| GitHub | github.com/org/repo//path | github.com/org/repo//modules/k8s |
| Git | git::https://... | git::https://github.com/org/repo.git |
| S3 | s3::https://... | s3::https://s3.eu-central-1.amazonaws.com/bucket/module.zip |
~> für Patch-Updates, wenn Sie automatische Sicherheitsupdates wünschen.
module
source
variable
output
locals
registry
module "vpc" { source = "terraform-aws-modules/vpc/aws" version = "5.0.0" } ·
variable "instance_type" { type = string } ·
output "public_ip" { value = aws_instance.main.public_ip }