Terraform-Tipps:
Infrastructure-as-Code
mit Terratest absichern
– Teil 3
Der dritte Teil der Terraform-Reihe bezieht sich auf das Testen von Terraform Infrastructure-as-Code (IaC). In der OTTO IT setzen viele Teams Terraform ein, um ihre Cloud-Infrastruktur effektiv zu orchestrieren, zu automatisieren und zu verwalten. Wie auch beim normalen Anwendungscode ist es entscheidend, das Testen nicht außer Acht zu lassen, insbesondere wenn es um Terraform-Module geht. So kann sichergestellt werden, dass die Deployments stabil und fehlerfrei sind. In diesem Beitrag erfährst du die Grundlagen des Testens mit Terraform und erhältst praktische Best Practices für deinen Workflow.
Terraform-Tipps-Serie:
Tests im IaC-Kontext stellen sicher, dass Terraform-Module wie gewünscht funktionieren, bevor sie produktiv eingesetzt werden. Sie helfen dabei:
• Fehler frühzeitig zu erkennen
• die Wartbarkeit des Codes zu verbessern
• die Zuverlässigkeit von Deployments zu erhöhen
Automatisierte Tests verhindern, dass Änderungen an der Infrastruktur zu unerwarteten Problemen führen – und damit zu teuren Ausfällen.
Während sich klassische Tests auf die Businesslogik konzentrieren, erfordert das Testen von Infrastrukturcode oft das Bereitstellen echter Cloud-Ressourcen. Ein vollständiger End-to-End-Test ist jedoch meist zu zeit- und kostenintensiv. Reine Unit-Tests reichen wiederum nicht aus.
Die Lösung: Teile deine Architektur in Module auf und teste diese einzeln. So entsteht ein iterativer, kosteneffizienter Entwicklungsansatz, der Fehler frühzeitig erkennt und die Qualität sichert.

Installiere zunächst Go und richte Terratest gemäß QuickStart ein. Danach kannst du deine Tests mit dem Befehl “go test” ausführen und prüfen, ob die Infrastruktur wie erwartet provisioniert wird.
In deinen Testdateien definierst du Assertions, die die erzeugten Ressourcen überprüfen – ähnlich wie manuell durchgeführte Checks (z. B. „Ist Port 22 offen?“).
Typische Assertions:
• Existenz bestimmter Ressourcen (z. B. EC2-Instanz, Security Group)
• Eigenschaften der Ressourcen (z. B. SSH-Zugriff erlaubt)
• Validierung der Outputs des Moduls
Beispiele für AWS, Google und Azure findest du hier.
Nach dem Schreiben der Tests erfolgt die Ausführung per go test. Das Tool liefert direkt Feedback, ob die Infrastruktur korrekt bereitgestellt wurde. Fehler werden sofort angezeigt – das erleichtert das Troubleshooting erheblich.
Damit Tests ein fester Bestandteil deines Workflows werden, integriere sie in deine CI/CD-Pipeline – z. B. mit GitHub Actions.
• Verwende eindeutige Prä-/Suffixes für Ressourcen, um parallele Testläufe zu entkoppeln.
• Nutze ein Remote-Backend (GCP Storage oder AWS S3) für den Terraform-State
• Setze feste Test-Timeouts, um hängende Jobs zu vermeiden.
• Automatisiere das Aufräumen mit „terraform destroy“, um unnötige Kosten zu vermeiden.
Hier ist ein einfaches Beispiel für eine GitHub Actions-Konfiguration.
Tests sind ein zentraler Bestandteil einer zuverlässigen und skalierbaren Infrastructure-as-Code-Strategie. Egal ob du gerade erst mit Terraform startest oder bestehende Prozesse optimieren willst – automatisierte Tests und ihre Integration in CI/CD sorgen für Qualität und Stabilität deiner Infrastruktur.
Was ist Terratest?
Terratest ist ein Go-basiertes Framework zum automatisierten Testen von Terraform-Modulen und Infrastructure-as-Code-Deployments.
Wie testet man Terraform-Module?
Terraform-Module können mit Tools wie Terratest getestet werden, indem Infrastruktur bereitgestellt, überprüft und anschließend wieder zerstört wird.
Warum ist Terraform Testing wichtig?
Automatisierte Tests erkennen Fehler früh und verhindern fehlerhafte Infrastruktur-Deployments.
Möchtest du Teil des Teams werden?

We have received your feedback.