Skip to main content

Mehrere Terraform-Umgebungen verwalten

Artikel von
Headshot of Stephane Jourdan

Stephane Jourdan

feature synk iac terraform blue

30. Juni 2020

0 Min. Lesezeit

Anmerkung der Redaktion: Dieser Beitrag erschien ursprünglich auf CloudSkiff.com. CloudSkiff ist im Oktober 2021 zu Snyk gekommen.

Wie bewältigen Sie die Komplexität mehrerer Terraform-Umgebungen? Bei mehreren Umgebungen und möglicherweise mehreren Teams kann es schnell kompliziert werden. Hier erfahren Sie, wie Sie wie ein Profi mit der Verwaltung mehrerer Terraform-Umgebungen beginnen.

Erste Schritte mit TF-Dateien

Wenn Sie mehrere Terraform-Umgebungen verwalten müssen, gibt es viele Möglichkeiten, Ihren Ansatz auszubauen und loszulegen.

Schritt für Schritt mit einzelnen .tf-Dateien beginnen – es kann zunächst einschüchternd sein, alle bewährten Methoden zu kennen. Wahrscheinlich lassen Sie sich bestenfalls ablenken und schlimmstenfalls entmutigen. Sie können also ganz einfach mit einer einzigen TFState-Datei anfangen. Erstellen Sie eine einfache Terraform-Datei, nennen Sie sie production.tf und schreiben Sie Ihre VPCs, VMs oder was auch immer hinein. Schon bald können Sie eine weitere Umgebung erstellen. Nennen wir sie staging.tf. Es bleibt eine einzige TFState-Datei, was nicht schlecht ist, aber nicht skalierbar. Dennoch ist das eine Möglichkeit, schrittweise vorzugehen.

Terraform-Workspaces verwenden

HashiCorp empfiehlt die Verwendung dessen, was heute als Workspaces bezeichnet wird. workspaces ist ein Terraform-Unterbefehl. Früher hieß er environments.

Workspaces dienen dazu, für jede Umgebung eine separate TFState-Datei zu verwenden. Angenommen, Sie haben eine QA-, eine Staging- und eine Produktionsumgebung: Mit diesem Terraform-Unterbefehl wechseln Sie zwischen den TFStates. HashiCorp empfiehlt diese Vorgehensweise. Das heißt aber nicht, dass Sie es genau so machen müssen.

Ordner in Ihrem Git-Repository zur Organisation verwenden

Eine weitere Möglichkeit besteht darin, Ihre State-Dateien nicht mithilfe von Workspaces, sondern mithilfe von Ordnern aufzuteilen. Erstellen Sie einfach Ordner in Ihrem Git-Repository, geben Sie jedem Ordner einen Namen, zum Beispiel staging und production, und generieren Sie aus diesen Ordnern verschiedene TFState-Dateien. Das ist ganz einfach. So haben Sie Ihre Umgebungen bereits nach Ordnern getrennt – auf TFState-Ebene.

Module: eine gängige Methode zur Verwaltung von Terraform-Umgebungen

Die Verwendung von Modulen entwickelt sich inzwischen zu einem Standard. Das ist etwas fortgeschrittener. Im Grunde funktionieren Module, indem Variablen wie Zeichenfolgen usw. in sie eingefügt werden. Sie sind eine sehr nützliche Terraform-Funktion.

Module enthalten generischen Code. Nehmen wir als Beispiel eine Standard-VPC. Für diese VPC können verschiedene Werte wie das Subnetz und ein Name festgelegt werden. Sie können zwei Ordner erstellen, einen für jede Umgebung. In Ihrer ersten Terraform-Datei legen Sie den Adressbereich Ihrer Staging-VPC fest, während die andere Datei einen anderen Adressbereich enthält. So lösen Sie das Problem einfach, indem Sie unterschiedliche Werte in die Module einfügen.

Das ist die wichtigste Methode, die ich für den Umgang mit Umgebungen empfehlen würde.

Fangen Sie ganz einfach und nativ mit einer einzigen TFState-Datei an, erstellen Sie verschiedene Ordner, teilen Sie die States nach Ordnern auf und verwenden Sie Module, um unterschiedliche Werte einzufügen. Oder halten Sie sich einfach an die Empfehlungen von HashiCorp und verwenden Sie beispielsweise Workspaces.

Ressourcen organisieren und Verzeichnisstruktur festlegen

Zu guter Letzt sollten Sie überlegen, wie Sie Ihre Ressourcen und Verzeichnisstruktur organisieren. Verwenden Sie ein oder mehrere Repositories?

Darauf gibt es keine allgemeingültige Antwort. Eine gängige Konfiguration sieht jedoch vor, die Module separat zu verwalten und aus einem einzigen Repository aufzurufen. Nehmen wir ein Beispiel: Sie haben ein Modul, das eine VPC anhand von zwei Variablen korrekt konfigurieren kann. Dann verfügen Sie über sauberen Terraform-Code. Dieser Code kann in einem separaten Terraform-Git-Repository gespeichert, verwaltet, versioniert und wie jedes andere Projekt veröffentlicht werden. Dennoch lässt er sich nicht einfach unverändert verwenden. Sie benötigen weiterhin Ihr Infrastruktur-Repository, um dieses Modul aufzurufen – ähnlich wie Sie in der Softwareentwicklung eine Standardbibliothek verwenden würden.

Für manche ist auch die Ordnerhierarchie wichtig. Häufig gibt es separate Testordner für alle Tests, Ordner für die Module und weitere Ordner für die Umgebungen.

Ein weiteres gängiges Muster sind Variablendateien mit allen möglichen Werten. So können Umgebungen mithilfe dieser Umgebungsvariablen an die Ausführung übergeben werden.

Terraform-Code schützen

Snyk IaC schützt Ihre Terraform-Konfigurationen (sowie Kubernetes-, CloudFormation- und ARM-Vorlagen!) direkt beim Programmieren und bietet Anleitung zur Fehlerbehebung, damit Sie Änderungen zusammenführen und weitermachen können. Testen Sie beim Schreiben, überwachen Sie Änderungen in Ihren Git-Repositories und automatisieren Sie Tests in Ihren Build-Pipelines vor der Bereitstellung. Mit dem kostenlosen Tarif können Sie in wenigen Minuten loslegen. Eine Sicherheitsverletzung durch eine IaC-Fehlkonfiguration kann dagegen lebenslange Schäden verursachen. Registrieren Sie sich unten und schützen Sie Ihre Konfigurationen.

Sichern Sie Ihre Infrastruktur an der Quelle

Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.

Weiterlesen

feature insights context
Blog

Autonome Angriffe sind bereits Realität. Die Verteidigung muss Schritt halten.

Autonome Angreifer verkürzen das Zeitfenster für die Verteidigung. Erfahren Sie, wie kontinuierliches Erkennen, Beheben, Validieren und Verhindern Sicherheitsteams helfen kann, Schritt zu halten.

Blog

Evo ADS Govern Agent Behavior ist allgemein verfügbar: MCP-Nutzung unter Kontrolle bringen

Evo ADS Govern Agent Behavior ist jetzt allgemein verfügbar und startet mit MCP Governance. Entdecken, genehmigen, überwachen, protokollieren und blockieren Sie die MCP-Server-Nutzung in führenden KI-Coding-Agenten.

illustration hero ai
Blog

Was ist Agentic AppSec?

Erfahren Sie, wie Agentic AppSec fundierte, klar begrenzte und unabhängig überprüfte KI-Agenten einsetzt, um den Application-Security-Kreislauf zu steuern.