Der Inside-Out-Sicherheits Blog Blog   /  

Was ist Terraform: Alles, was Sie wissen müssen

What is Terraform: Everything You Need to Know | Varonis

Die Verwaltung der IT-Infrastruktur über mehrere Clouds, Server und Umgebungen hinweg kann schnell komplex und schwerfällig werden. Eine der besten Möglichkeiten, wie Unternehmen ihre Infrastruktur in großem Umfang betreiben und ausbauen können, ist jedoch eine IaC-Lösung (Infrastructure as Code) namens Terraform. Aber was ist Terraform und wie funktioniert es?

In diesem Artikel gehen wir fundiert auf Terraform ein und erläutern die Grundlagen sowie den Vergleich mit anderen IaC-Lösungen. Außerdem bieten wir Hintergrundinformationen über den Arbeitsablauf und die Funktionen von Terraform geben, und wie sich Terraform am besten in der eigenen IT-Infrastruktur einsetzen lässt. Am Ende werden Sie wissen, wie Sie Ihr gesamtes IT-Ökosystem mithilfe von Terraform und IaC orchestrieren können.

Was ist Terraform? 

Terraform ist ein IAC-Tool, das hauptsächlich von DevOps-Teams verwendet wird, um verschiedene Infrastrukturaufgaben zu automatisieren. Die Bereitstellung von Cloud-Ressourcen ist beispielsweise einer der Hauptanwendungsfälle von Terraform. Es handelt sich um ein Cloud-agnostisches Open-Source-Bereitstellungstool, das in der Sprache Go geschrieben und von HashiCorp entwickelt wurde.

Mit Terraform können Sie Ihre gesamte Infrastruktur in Form von Code beschreiben. Selbst wenn Sie Ihre Server bei verschiedenen Providern wie AWS oder Azure haben, können Sie mit Terraform diese Ressourcen parallel und anbieterübergreifend aufbauen und verwalten. Terraform kann als Bindegewebe und gemeinsame Sprache betrachtet werden, mit der Sie Ihren gesamten IT-Stack verwalten können.

Wozu wird Terraform verwendet?

Eine der Hauptfunktionen von Terraform ist die Bereitstellung in der Public Cloud bei einem der großen Provider. Die Bereitstellung eines IaC für Dienste wie AWS und Azure war – und wird auch weiterhin – der Hauptschwerpunkt von Terraform sein. Terraform ermöglicht die Nutzung dieser Public Clouds über einen Provider – ein Plug-in, das vorhandene APIs und Sprachen wie Azure Bicep wrappt und Terraform-Syntax erstellt.

Die zweite Hauptanwendung für Terraform besteht darin, Multi-Cloud-Bereitstellungen zu erleichtern. Einer der Hauptvorteile von Terraform ist, dass es im Gegensatz zu bestimmten anderen IaC-Konkurrenten über alle Cloud-Provider hinweg gleichzeitig funktioniert. Die Möglichkeit, Ressourcen in mehreren Cloud-Providern bereitzustellen, ist sehr wichtig, denn so können Ingenieure dieselbe Syntax nutzen, ohne sich mit mehreren Tools und Technologien vertraut zu machen.

Die dritthäufigste Anwendung von Terraform ist die Bereitstellung, Verwaltung und Orchestrierung von Ressourcen bei benutzerdefinierten Cloud-Providern. Ein Provider ist eine Möglichkeit in Terraform, eine vorhandene API zu wrappen und in die deklarative Terraform-Syntax umzuwandeln. Das geht auch, wenn man nicht AWS oder einen anderen großen Cloud-Dienst verwendet. Provider können auch für interne Anwendungsfälle geschrieben werden, bei denen man etwa bestehende Tools oder APIs in Terraform konvertieren möchte.

Kurz gesagt: Terraform hilft Ihnen, Ihr gesamtes IT-Ökosystem über IaC zu verwalten – egal ob es sich um eine Single-Cloud-, eine Multi-Cloud- oder eine benutzerdefinierte Bereitstellung handelt.

Vorteile von Infrastructure-as-Code (IaC)

IaC ersetzt die Standardbetriebsverfahren und die manuelle Arbeit bei der Verwaltung von IT-Ressourcen mit Code. Anstatt Cloud-Knoten oder physische Hardware manuell zu konfigurieren, automatisiert IaC die Verwaltung der Prozessinfrastruktur durch Quellcode.

Eine IaC-Lösung wie Terraform bietet die folgenden wichtigen Vorteile:

  • Schnelligkeit und Einfachheit. IaC ersetzt manuelle Prozesse und beschleunigt so die Lebenszyklen von Bereitstellung und Verwaltung. Mit IaC kann man eine ganze Infrastrukturarchitektur erstellen, indem man ein einfaches Skript ausführt.
  • Teamzusammenarbeit. Verschiedene Teammitglieder können über Tools wie Github an genau so an IaC-Software zusammenarbeiten wie an normalem Anwendungscode. Der Code kann für die zukünftige Verwendung und Referenz einfach mit Problemverfolgungssystemen verbunden werden.
  • Fehlerreduzierung. IaC minimiert die Wahrscheinlichkeit von Fehlern oder Abweichungen bei der Bereitstellung Ihrer Infrastruktur. Der Code standardisiert Ihre Einrichtung vollständig. So können Anwendungen reibungslos und fehlerfrei laufen, ohne dass ein Administrator sie ständig überwachen muss.
  • Notfallwiederherstellung. Mit IaC können Sie Ihre Systeme im Ernstfall tatsächlich schneller wiederherstellen. Denn eine manuell konstruierte Infrastruktur muss auch manuell wieder aufgebaut werden. Aber mit IaC können Sie in der Regel einfach Skripte erneut ausführen und genau dieselbe Software erneut bereitstellen.
  • Verbesserte Sicherheit. IaC beruht auf Automatisierung, wodurch viele mit menschlichen Fehlern verbundene Sicherheitsrisiken beseitigt werden. Wenn eine IaC-basierte Lösung richtig installiert ist, verbessert sich die allgemeine Sicherheit Ihrer Computerarchitektur und der damit verbundenen Daten massiv.

IaC bietet zwar noch viele andere Vorteile, aber vor allem die Geschwindigkeit, Genauigkeit, Datentransparenz und Sicherheit sind wichtige Gründe, aus denen sich Unternehmen für die Lösungen wie Terraform entscheiden. 

Wie funktioniert Terraform?

Mit Terraform können Sie Ihre gesamte Infrastruktur über Konfigurationsdateien und Versionskontrolle definieren und verwalten. Dies wird durch die Verwendung der beiden Hauptkomponenten der Terraform-Architektur erreicht: Core und Provider.

1. Funktionsweise von Terraform Core

Um seine Arbeit zu erledigen, verwendet Terraform Core zwei Eingabequellen. Die erste ist die Quell-Eingabe, die der Benutzer in Terraform konfiguriert. Darin wird definiert, welche Ressourcen erstellt oder bereitgestellt werden müssen. Die zweite Eingabequelle besteht aus Daten-Feeds in Terraform über die aktuelle Infrastrukturkonfiguration.

Terraform nimmt dann diese Eingaben auf und legt fest, welche Maßnahmen ergriffen werden müssen. Es nimmt den vom Benutzer angegebenen gewünschten Soll-Zustand, vergleicht ihn mit dem Ist-Zustand und konfiguriert die Architektur so, dass die Lücken geschlossen werden. Terraform Core findet im Wesentlichen heraus, was erstellt, geändert oder gelöscht werden muss, um Ihre Infrastruktur vollständig bereitzustellen.

2. Funktionsweise von Terraform-Providern

Die zweite Schlüsselkomponente von Terraform sind Anbieter für bestimmte Technologien. Dabei handelt es sich in der Regel um Cloud-Provider wie AWS oder Azure, aber auch um beliebige andere Infrastructure- oder Platform-as-a-Service-Tools. Kubernetes ist beispielsweise auch ein Provider, den Terraform nutzt.

Terraform verfügt über mehr als hundert Provider für verschiedene Technologien, mit denen Nutzer auf deren Ressourcen zugreifen können. Wenn Sie z. B. AWS verwenden, hat Terraform auch Zugriff auf EC2-Instanzen und andere Ressourcen innerhalb des Tech-Stacks. Sie können dann Infrastrukturen auf verschiedenen Ebenen erstellen, z. B. Kubernetes über Azure einsetzen.

So funktioniert Terraform – es nutzt Core- und Provider-Funktionen, um Ihre Anwendungs- und Infrastruktureinrichtung schnell abzuschließen und nur Code zu verwenden.

Terraform und die Konkurrenz

Es gibt einige Alternativen auf dem IaC-Markt, von denen jede im Vergleich zu Terraform bestimmte Vor- und Nachteile bietet. Wir gehen nun kurz auf die anderen IaC-Tools auf dem Markt ein, und wie sie im Vergleich zu Terraform abschneiden.

Terraform und Ansible

Ansible ist ein IaC-Tool zur Automatisierung der Systemkonfiguration und -verwaltung. Der Hauptunterschied besteht darin, dass Ansible kein Bereitstellungstool ist und prozedural vorgeht, d. h. der Benutzer muss die Schritte der Bereitstellung manuell festlegen. So erhalten DevOps-Anwender mehr Kontrolle, haben aber auch mehr Arbeit. Ansible eignet sich am besten für die Bereitstellung von Servern mit der richtigen Software und bereits konfigurierten Updates, während Terraform die Infrastruktur von Grund auf neu einrichten und orchestrieren kann. Außerdem bietet Terraform ein vollständiges Lebenszyklusmanagement, was bei Ansible nicht geht.

Terraform und Pulumi

Pulumi ist ein beliebtes Open-Source-IaC-Tool für die Entwicklung, Bereitstellung und Verwaltung von Cloud-Infrastrukturressourcen. Im Gegensatz zu Terraform verwendet Pulumi keine domänenspezifische Softwaresprache, sodass Benutzer in GO, .NET, JavaScript und in anderen Sprachen bereitstellen können. Und während Terraform strengen Coding-Richtlinien folgt, gilt das für Pulumi nicht. Dadurch ist es in bestimmten Szenarien etwas flexibler. Allerdings ist die Pulumi-Community wesentlich kleiner als die von Terraform, und es gibt entsprechend weniger Dokumentation. Obwohl Pulumi einige Flexibilitätsvorteile bietet, ist Terraform im Allgemeinen bei größeren Bereitstellungen überlegen.

Terraform-Arbeitsablauf

Der Terraform-Arbeitsablauf besteht aus den folgenden drei Schritten:

Schritt 1: Schreiben

Im ersten Schritt des Terraform-Arbeitsablaufs deklarieren Sie Ihre Infrastrukturressourcen als Code mit der Hashicorp Configuration Language (HCL).

Schritt 2: Überprüfen

Terraform zeigt dann seinen Plan zum Hinzufügen oder Entfernen von Ressourcen an, basierend auf dem Vergleich Ihrer deklarierten Infrastruktur und dem Ist-Zustand der vorhandenen Ressourcen.

Schritt 3: Anwenden

Nun können Sie geplante Änderungen akzeptieren, um Infrastrukturressourcen hinzuzufügen oder zu entfernen. Ihre Infrastruktur kann nun mit Terraform vollständig bereitgestellt werden.

Terraform-FAQs

Ist Terraform ein DevOps-Tool?

Ja. Terraform ist ein äußerst nützliches Tool für DevOps-Teams zur Bereitstellung, Verwaltung und Orchestrierung von Single- oder Multi-Cloud-Bereitstellungen.

Was ist Terraform in AWS?

Terraform ist Infrastructure-as-Code (IaC) in Bezug auf AWS. Es greift über einen Provider auf AWS-Ressourcen zu und lässt Benutzer AWS über Terraform-Code verwalten.

Welche Sprache verwendet Terraform?

Terraform ist ursprünglich in der Sprache GO programmiert, funktioniert aber mit allen Betriebssystemen. Bei der Einrichtung kann auch die Hashicorp Configuration Language (HCL) verwendet werden.

Funktioniert Terraform mit Kubernetes?

Ja, Terraform kann die Bereitstellung von Kubernetes auf Cloud-Plattformen automatisieren. Terraform ist keine Alternative zu Kubernetes, und tatsächlich funktionieren beide zusammen sehr gut.

Abschließende Überlegungen 

Die Bereitstellung, Verwaltung und Orchestrierung von Multi-Cloud-Umgebungen ist für DevOps-Teams mitunter sehr schwierig. Die Koordination zwischen verschiedenen Dienstprovidern und Technologien wie AWS und Azure Virtual Networks ist mit Infrastructure-as-Code von Terraform jedoch deutlich einfacher und weniger zeitaufwändig. Terraform ist plattformagnostisch und funktioniert mit fast jeder Cloud oder jedem Datenservice-Provider. Ein erfahrener Cybersicherheitspartner wie Varonis kann Ihnen bei der Implementierung von Terraform in Ihrem eigenen Ökosystem helfen. So leistet der Code die Schwerstarbeit, anstatt Ihr DevOps-Team.

Wir sind Varonis.

Seit 2005 schützen wir, mit unserer Datensicherheits- plattform, wertvolle Daten von Unternehmen in aller Welt, vor feindlichen Übergriffen.

Wie Varonis funktioniert