Terraform

menu icon

Terraform

Dieser Leitfaden zeigt alles, was Sie über Terraform wissen müssen - ein Tool, das es Programmierern ermöglicht, sicher und effizient Infrastruktur zu bauen, zu ändern und zu installieren.

Was ist Terraform?

Terraform ist ein quelloffenes "Infrastructure as Code"-Tool, das von HashiCorp entwickelt wurde.

Als deklaratives Codierungstool ermöglicht Terraform Entwicklern, eine übergeordnete Konfigurationssprache namens HCL (HashiCorp Configuration Language) zu verwenden, um die gewünschte "Endstatus"-Cloud- oder Vor-Ort-Infrastruktur für die Ausführung einer Anwendung zu beschreiben. Es generiert dann einen Plan für das Erreichen dieses Endstatus und führt den Plan zur Bereitstellung der Infrastruktur aus.

Da Terraform eine einfache Syntax verwendet, Infrastruktur über mehrere lokale und Cloud-Rechenzentren hinweg bereitstellen kann und die Infrastruktur als Reaktion auf Konfigurationsänderungen sicher und effizient neu bereitstellen kann, ist es derzeit eines der beliebtesten Tools zur Infrastrukturautomatisierung. Wenn Ihre Organisation plant, eine Hybrid-Cloud oder eine Multicloud-Umgebung zu implementieren, werden Sie wahrscheinlich Terraform kennenlernen wollen oder müssen.

Warum Infrastructure as Code (IaC)?

Um die Vorteile von Terraform besser zu verstehen, hilft es zunächst, die Vorteile von Infrastructure as Code (IaC) zu verstehen. IaC bietet Entwicklern die Möglichkeit, die Infrastruktur so zu kodifizieren, dass die Bereitstellung automatisiert, schneller und wiederholbar ist. Es handelt sich um eine Schlüsselkomponente von Agile und DevOps-Praktiken wie Versionssteuerung, kontinuierliche Integration und kontinuierliche Implementierung.

Infrastructure as Code kann bei Folgendem helfen:

  • Geschwindigkeit verbessern: Automatisierung ist schneller als die manuelle Navigation einer Schnittstelle, wenn Sie Ressourcen implementieren und/oder verbinden müssen.
  • Höhere Zuverlässigkeit: Wenn Ihre Infrastruktur groß ist, passiert es schnell, dass eine Ressource oder eine Bereitstellung von Services in der falschen Reihenfolge konfiguriert wird. Mit IaC werden die Ressourcen immer genau wie deklariert bereitgestellt und konfiguriert.
  • Konfigurationsabweichung verhindern: Eine Konfigurationsabweichung tritt auf, wenn die Konfiguration, mit der Ihre Umgebung bereitgestellt wurde, nicht mehr mit der tatsächlichen Umgebung übereinstimmt. (Siehe "Unveränderliche Infrastruktur" weiter unten.)
  • Unterstützung von Experimenten, Tests und Optimierung: Da Infrastructure as Code die Bereitstellung neuer Infrastruktur so viel schneller und einfacher macht, können Sie experimentelle Änderungen vornehmen und testen, ohne viel Zeit und Ressourcen zu investieren; und wenn Ihnen die Ergebnisse zusagen, können Sie die neue Infrastruktur für die Produktion schnell skalieren.

Genauere Informationen finden Sie unter "Was ist Infrastructure as Code?":

Warum Terraform?

Es gibt einige wichtige Gründe, warum Entwickler Terraform gegenüber anderen Infrastructure-as-Code-Tools bevorzugen:

  • Open Source: Terraform wird von großen Communitys von Mitwirkenden unterstützt, die Plug-ins für die Plattform erstellen. Unabhängig davon, welchen Cloud-Provider Sie verwenden, es ist einfach, Plug-ins, Erweiterungen und professionelle Unterstützung zu finden. Dies bedeutet auch, dass sich Terraform schnell entwickelt und ständig neue Vorteile und Verbesserungen hinzugefügt werden.
  • Plattformunabhängig: Bedeutet, dass es mit jedem Cloud-Service-Provider verwendet werden kann. Die meisten anderen IaC-Tools sind für die Arbeit mit einem einzigen Cloud-Provider konzipiert.
  • Unveränderliche Infrastruktur: Die meisten Infrastructure-as-Code-Tools erstellen veränderliche Infrastruktur, d. h., die Infrastruktur kann geändert werden, um Änderungen, wie z. B. ein Middleware-Upgrade oder einen neuen Speicherserver, zu ermöglichen. Die Gefahr bei veränderlicher Infrastruktur ist ein Konfigurationsdrift - wenn sich die Änderungen häufen, "driftet" die tatsächliche Bereitstellung verschiedener Server oder anderer Infrastrukturelemente weiter von der ursprünglichen Konfiguration ab, wodurch Fehler oder Leistungsprobleme schwer zu diagnostizieren und zu beheben sind. Terraform stellt eine unveränderliche Infrastruktur bereit, was bedeutet, dass bei jeder Änderung an der Umgebung die aktuelle Konfiguration durch eine neue ersetzt wird, die die Änderung berücksichtigt, und die Infrastruktur neu bereitgestellt wird. Noch besser ist, dass frühere Konfigurationen als Versionen beibehalten werden können, um Rollbacks zu ermöglichen, falls erforderlich oder gewünscht.

Terraform-Module

Terraform-Module sind kleine, wiederverwendbare Terraform-Konfigurationen für mehrere Infrastrukturressourcen, die gemeinsam verwendet werden. Terraform-Module sind nützlich, weil sie es ermöglichen, komplexe Ressourcen mit wiederverwendbaren, konfigurierbaren Konstrukten zu automatisieren. Selbst das Schreiben einer sehr einfachen Terraform-Datei führt zu einem Modul. Ein Modul kann andere Module aufrufen - sogenannte untergeordnete Module -, wodurch die Zusammenstellung von Konfigurationen schneller und kompakter wird. Module können auch mehrfach aufgerufen werden, entweder in der gleichen Konfiguration oder in separaten Konfigurationen.

Terraform-Provider

TerraformAnbieter sind Plug-ins, die Ressourcentypen implementieren. Provider enthalten den gesamten Code, der für die Authentifizierung und Verbindung zu einem Dienst - typischerweise von einem öffentlichen Cloud-Anbieter - im Namen des Benutzers erforderlich ist. Sie können Anbieter für die von Ihnen verwendeten Cloud-Plattformen und -Services finden, sie zu Ihrer Konfiguration hinzufügen und dann ihre Ressourcen für die Bereitstellung von Infrastruktur verwenden. Es gibt Provider für fast alle großen Cloud-Anbieter, SaaS-Angebote und mehr, die von der Terraform-Community oder einzelnen Organisationen entwickelt und/oder unterstützt werden. Eine detaillierte Liste finden Sie in der Terraform-Dokumentation  (Link außerhalb von IBM).

Terraform im Vergleich zu Kubernetes

Manchmal gibt es Verwirrung zwischen Terraform und Kubernetes und was sie eigentlich tun. Fakt ist, dass sie keine Alternativen sind und tatsächlich effektiv zusammenarbeiten.

Kubernetes ist ein quelloffenes Containerorchestrierungssystem, mit dem Entwickler Implementierungen auf Knoten in einem Rechencluster planen und containerisierte Workloads aktiv verwalten können, um sicherzustellen, dass ihr Status mit den Absichten der Benutzer übereinstimmt.

Auf der anderen Seite ist Terraform ein Infrastructure-as-Code-Tool mit einer viel größeren Reichweite, das Entwickler die komplette Infrastruktur automatisieren lässt, die sich über mehrere öffentliche und private Clouds erstreckt.

Terraform kann Funktionen auf der Ebene von Infrastructure-as-a-Service (IaaS),Platform-as-a-Service (PaaS) oder sogar Software-as-a-Service (SaaS) automatisieren und verwalten und alle diese Ressourcen über alle diese Provider parallel erstellen. Sie können Terraform verwenden, um die Bereitstellung von Kubernetes - insbesondere von verwalteten Kubernetes-Clustern auf Cloud-Plattformen - und die Implementierung von Anwendungen in einem Cluster zu automatisieren.

Terraform im Vergleich zu Ansible

Terraform und Ansible sind beide Infrastructure-as-Code-Tools, aber es gibt einige signifikante Unterschiede zwischen den beiden:

  • Während Terraform nur ein deklaratives Tool ist (siehe oben), kombiniert Ansible sowohl die deklarative als auch die prozedurale Konfiguration. Bei der prozeduralen Konfiguration legen Sie die Schritte bzw. die genaue Art und Weise fest, in der Sie die Infrastruktur in den gewünschten Status versetzen wollen. Die prozedurale Konfiguration macht mehr Arbeit , aber sie bietet mehr Kontrolle.
  • Terraform ist quelloffen; Ansible wird von Red Hat entwickelt und verkauft.

IBM und Terraform

IBM Cloud Schematics ist das kostenlose Cloud-Automatisierungs-Tool von IBM, das auf Terraform basiert. Mit IBM Cloud Schematics können Sie Ihre Terraform-basierte Infrastrukturautomatisierung vollständig verwalten, so dass Sie mehr Zeit für die Erstellung von Anwendungen verwenden können und weniger Zeit für den Aufbau von Umgebungen benötigen.

Erfahren Sie mehr zur Verwendung von IBM Cloud Schematics.

Weitere Informationen zu Terraform erhalten Sie, wenn Sie sich für die IBMid anmelden und Ihr iBM Cloud-Konto erstellen.