Definitionen durchsuchen :
Definition

HashiCorp Terraform

Terraform von HashiCorp ist eine Open Source IaC-Software (Infrastructure as Code), mit der DevOps-Ingenieure die physischen Ressourcen, die eine Anwendung zum Betrieb benötigt, programmgesteuert bereitstellen können.

Fortsetzung des Inhalts unten

Infrastructure as Code ist eine IT-Praxis, die die zugrunde liegende IT-Infrastruktur einer Anwendung durch Programmierung verwaltet. Dieser Ansatz für die Ressourcenzuweisung ermöglicht es Entwicklern, Ressourcen logisch zu verwalten, zu überwachen und bereitzustellen – im Gegensatz zu der Notwendigkeit, dass ein Betriebsteam jede benötigte Ressource manuell konfigurieren muss.

Terraform-Anwender definieren und erzwingen Infrastrukturkonfigurationen mit einer JSON-ähnlichen Konfigurationssprache namens HCL (HashiCorp Configuration Language). Die einfache Syntax von HCL macht es DevOps-Teams leicht, Infrastruktur über mehrere Cloud- und On-Premises-Rechenzentren hinweg bereitzustellen und neu zuzuweisen.

HashiCorp bietet eine kommerzielle Version von Terraform namens Terraform Enterprise an. Laut HashiCorp enthält die kommerzielle Version Enterprise-Funktionen auf Basis der Open-Source-Edition sowie ein Framework namens Sentinel, das Richtlinien als Code implementieren kann.

Wie funktioniert Terraform?

Mit Terraform können Benutzer ihre gesamte Infrastruktur mit Unterstützung von Konfigurationsdateien und Versionskontrolle definieren. Wenn ein Befehl zum Einsatz und Betrieb eines Servers, einer Datenbank oder eines Load Balancers gegeben wird, parst Terraform den Code und übersetzt ihn in einen API-Aufruf (Application Programming Interface) an den Ressourcenanbieter. Da Terraform Open Source ist, können Entwickler das Tool jederzeit erweitern, indem sie neue Plug-Ins schreiben oder verschiedene Versionen von bestehenden Plug-Ins kompilieren.

Terraform umfasst zwei wichtige Komponenten: Terraform Core und Terraform Plugins.

Terraform Core kümmert sich um das Lesen und Interpolieren von Ressourcenplanausführungen, Ressourcendiagrammen, Zustandsverwaltungsfunktionen und Konfigurationsdateien. Core besteht aus kompilierten Binärdateien, die in der Programmiersprache Go geschrieben sind. Jedes kompilierte Binary fungiert als Kommandozeilenschnittstelle (Command Line Interface, CLI) für die Kommunikation mit Plug-Ins über Remote Procedure Calls (RPC).

Terraform Plugins sind für die Definition von Ressourcen für bestimmte Dienste verantwortlich. Dies beinhaltet die Authentifizierung der Infrastrukturanbieter und die Initialisierung der Bibliotheken, die für die API-Aufrufe verwendet werden. Terraform Plugins werden in Go als ausführbare Binärdateien geschrieben, die entweder als spezifischer Service oder als Provisioner verwendet werden können (Provisioner-Plug-Ins werden verwendet, um Befehle für eine bestimmte Ressource auszuführen).

Terraform Modules

Terraform-Module (Modules) ermöglichen es, komplexe Ressourcen zu nutzen und bei Bedarf wiederzuverwenden. Jedes Modul ist im Wesentlichen ein Container für mehrere Infrastrukturressourcen, die der Entwickler zusammenfassen möchte. Module haben sowohl Eingabe- als auch Ausgabevariablen. Eingangsvariablen nehmen Werte von einem aufrufenden Modul entgegen. Ausgangsvariablen geben Daten an das aufrufende Modul zurück. Module können sich gegenseitig aufrufen, was dazu beiträgt, Konfigurationen schneller zu machen.

Um in der Terraform Registry veröffentlicht zu werden, muss jedes Modul eine Namensstruktur, eine Repository-Beschreibung, eine Standard-Modulstruktur, ein unterstütztes Versionskontrollsystem und Tags zur Freigabe haben. Die Terraform Registry fungiert als zentrales Repository für den Austausch von Modulen und ermöglicht das Auffinden und Verteilen von Terraform-Modulen an Benutzer.

Die Registry ist in zwei Varianten verfügbar:

  • Public Registry: enthält Dienste, die mit einer API interagieren, um bestimmte Ressourcen und von der Community zur Verfügung gestellte Module freizugeben und zu verwalten.
  • Private Registry: enthält Dienste für Module, die intern innerhalb einer Organisation verwendet werden.

Wofür wird Terraform verwendet?

Externes Ressourcenmanagement: Terraform unterstützt Public- und Private-Cloud-Infrastrukturen, sowie Netzwerk-Appliances und Software-as-a-Service-Einsätze (SaaS).

Multi-Cloud-Bereitstellung: Die native Fähigkeit des Software-Tools, mehrere Cloud-Dienste zu unterstützen, trägt zur Erhöhung der Fehlertoleranz bei.

Multi-Tier-Applikationen: Terraform ermöglicht es, jede Ressourcensammlung bei Bedarf einfach nach oben oder unten zu skalieren.

Self-Service-Cluster: die Registrys machen es den Anwendern leicht, vorgefertigte Konfigurationen zu finden, die so verwendet werden können, wie sie sind, oder modifiziert werden können, um eine bestimmte Anforderung zu erfüllen.

Software-defined Networking (SDN): Die Lesbarkeit von Terraform macht es Netzwerkingenieuren leicht, die Konfiguration für ein SDN zu kodifizieren.

Ressourcen-Scheduler: Terraform-Module können Ressourcen auf AWS stoppen und starten und erlauben es Kubernetes, Docker-Container zu planen.

Disposable-Umgebungen: Module können verwendet werden, um eine Ad-hoc Disposable-Testumgebung für Code zu erstellen, bevor dieser in Produktion geht.

Terraform Features

Terraform baut eine Graphdatenbank auf, die den Betreibern einen Einblick in die Abhängigkeiten von Ressourcen gibt. Es generiert auch einen Ausführungsplan, der es den Betreibern ermöglicht, zu sehen, welche Abfolge von Schritten Terraform durchführen wird, wenn eine Einstellung angewendet oder eine Änderung vorgenommen wird. Die Terraform-Software umfasst außerdem Folgendes:

  • eine Konsole, die es dem Benutzer ermöglicht, Funktionen wie Numeric, String, Date und Time, Collections sowie Kodierungsfunktionen zu beobachten;
  • eine Konfigurationssprache, die Interpolation unterstützt und es Admins erlaubt, Funktionen als String zu übergeben, um eine Reihe von Operationen durchzuführen;
  • die Fähigkeit, HCL-Code in das JSON-Format zu übersetzen; und
  • eine Funktion namens Module Count, die die Anzahl der Module angibt, die auf eine Infrastruktur angewendet wurden.

Vor- und Nachteile von Terraform

Zu den Vorteilen von Terraform gehören die Fähigkeiten,

  • HCL-Code in JSON zu übersetzen;
  • mehrere Cloud-Plattformen zu unterstützen;
  • inkrementelle Änderungen an Ressourcen vorzunehmen;
  • Software-defined Networking zu unterstützen;
  • bestehende Ressourcen in einen Terraform-Status zu importieren; und
  • Sperren von Modulen vor der Anwendung von Zustandsänderungen, um sicherzustellen, dass nur eine Person gleichzeitig Änderungen vornehmen kann.

Es gibt jedoch auch einige Nachteile bei der Verwendung von Terraform:

  • neue Versionen und Updates können Bugs haben;
  • die Zustände müssen jederzeit mit der Infrastruktur synchronisiert sein;
  • wenn die Benutzer sich nicht für JSON entscheiden, müssen sie eine neue Sprache, HCL, lernen;
  • es hat keine Fehlerbehandlung; und
  • das Umbenennen von Ressourcen und das Verschieben in tiefere Module kann schwierig sein.

Alternativen zu Terraform

Zwei Beispiele für alternative Tools zu Terraform sind Pulumi und SaltStack.

Pulumi ist ein Infrastructure-as-Code-Urgestein mit einem Toolset, das speziell dafür entwickelt wurde, Anwender von Terraform wegzubringen. Pulumi unterstützt Cloud-native Plattformen wie Kubernetes und bietet Terraform-ähnliche Funktionen wie CrossGuard. Die Software lässt sich auch in CI/CD-Tools für GitOps-Workflows und automatisierte Test-Frameworks integrieren. Der Hauptunterschied zu Terraform liegt in der verwendeten Sprache. Während Terraform die domänenspezifische HCL verwendet, nutzt Pulumi Mainstream-Programmiersprachen wie JavaScript, TypeScript und Python, Go und .NET Core.

SaltStack (VMware) ist ein ereignisgesteuertes Automatisierungs- und IaC-Tool, das IT-Organisationen bei der Verwaltung und Sicherung von Cloud-Infrastrukturen unterstützt. Das Tool kann zur Automatisierung der effizienten Orchestrierung eines DevOps-Workflows im Unternehmen eingesetzt werden. Zu den Funktionen von SaltStack gehören automatisierte Bereitstellung, Netzwerkbereitstellung, Zeitplanung, Automatisierung der Gerätekonfigurationspflege und Fernzugriff von Mobilgeräten aus.

Diese Definition wurde zuletzt im März 2021 aktualisiert

ComputerWeekly.de

Close