Überprüfen der Terraform-Konfiguration und -Skripterstellung

Abgeschlossen

Diese Lerneinheit befasst sich mit der Ko und Skripterstellung von Terraform.

Warum Terraform?

Als Infrastruktur-Manager benötigen Sie ein Tool für die Bereitstellung und Verwaltung der Azure-Infrastruktur. Außerdem möchten Sie einen Infrastructure-as-Code-Ansatz in Konfigurationsdateien verwenden, die die Topologie Ihrer Azure-Ressourcen beschreiben.

HashiCorp Terraform eignet sich bestens für die Bereitstellung von Infrastruktur für verschiedene Cloudanbieter. Es bietet Entwicklern konsistente Tools zur Verwaltung der einzelnen Infrastrukturdefinitionen.

Automatisieren der Infrastrukturverwaltung

Durch Verwendung vorlagenbasierter Terraform-Konfigurationsdateien können Sie Azure-Ressourcen auf eine wiederholbare und vorhersehbare Weise definieren, bereitstellen und konfigurieren. Diese Automatisierung bietet mehrere Vorteile:

  • Das Potenzial für menschliche Fehler bei der Bereitstellung und Verwaltung der Infrastruktur wird gesenkt.
  • Dieselbe Vorlage wird mehrfach eingesetzt, um identische Entwicklungs-, Test- und Produktionsumgebungen zu erstellen.
  • Dies reduziert die Kosten für Entwicklungs- und Testumgebungen durch deren bedarfsgesteuerte Erstellung.

Grundlegendes zu Infrastrukturänderungen vor deren Anwendung

Wenn die Komplexität der Ressourcentopologie steigt, kann es schwierig sein, die Bedeutung und Auswirkungen von Infrastrukturänderungen zu verstehen.

Durch Verwendung von Terraform können Sie Infrastrukturänderungen vor deren Anwenden überprüfen und in der Vorschau anzeigen. So können Teammitglieder effektiver zusammenarbeiten, da sie vorgeschlagene Änderungen und ihre Auswirkungen zu einem frühen Zeitpunkt im Entwicklungsprozess nachvollziehen können.

Terraform-Konfigurationsdateien

Konfigurationsdateien generieren einen Ausführungsplan und legen fest, was der Plan zum Erreichen des gewünschten Zustands durchführt. Anschließend kann Terraform die beschriebene Infrastruktur erstellen. Wenn die Konfiguration geändert wird, kann Terraform die Änderungen ermitteln und inkrementelle Ausführungspläne erstellen.

Terraform-Konfigurationsdateien verwenden ihre eigene Konfigurationssprache, die YAML ähnelt und so konzipiert ist, dass sie eine Beschreibung der Infrastruktur zulässt.

Sie erstellen Konfigurationsdateien mithilfe der HashiCorp Configuration Language-Syntax (HCL). Die HCL-Syntax ist deklarativ und beschreibt ein beabsichtigtes Ziel anstelle der Schritte zum Erreichen des Ziels. Mit der HCL-Syntax können Sie den Cloudanbieter, z. B. Azure, und die Elemente angeben, aus denen Ihre Cloudinfrastruktur besteht.

Die Konfigurationsdateien werden als Nur-Text-Dateien mit der Erweiterung .tf gespeichert. Sie lauten wie folgt:

  • main.tf: (erforderlich) Definiert die Hauptstruktur, die die gesamte Infrastruktur direkt oder durch Aufrufe von Modulen bereitstellt
  • outputs.tf: Identifiziert alle Rückgabewerte eines Terraform-Moduls
  • variables.tf: Definiert die Variablen in main.tf unabhängig davon, ob sie erforderlich sind oder nicht

Screenshot der Terraform-Konfigurationsstruktur.

Module

Sie können Terraform-Ressourcen in einem Modul gruppieren, wodurch eine größere Konfigurationseinheit erstellt wird. Diese Module sind Gruppen von Konfigurationsdateien, die in einem einzelnen Verzeichnis gespeichert werden. Eine einfache Konfiguration besteht aus einem einzelnen Verzeichnis mit mindestens einer .tf-Datei.

Module bieten zahlreiche Vorteile. Beispielsweise:

  • Sie organisieren Ihr Projekt.
  • Sie kapseln die Komplexität.
  • Sie ermöglichen die Wiederverwendung häufig verwendeter Tasks.
  • Sie bieten Konsistenz und gewährleisten die Einhaltung bewährter Methoden.

Die main.tf-Datei

Ihre main.tf-Datei enthält die Hauptgruppe von Konfigurationsdetails für Ihr Modul. Diese Datei wird oft als Terraform-Plan bezeichnet. Der Terraform-Plan gibt die Infrastrukturressourcen an, die Sie benötigen. Sie können dieser Datei einen beliebigen Namen geben, normalerweise wird sie jedoch main.tf genannt.

Terraform-Workflow

Terraform empfiehlt den Hauptworkflow „Init/Plan/Apply“ für die Automatisierung. Dieser Workflow wendet alle CI/CD-Aktionen von Terraform auf neue und aktualisierte Git-Pull Requests an.

Diagramm des Terraform-Workflows mit den wichtigsten Aktionen „Init“, „Plan“ und „Apply“ (Initialisieren, Planen, Anwenden).

Die wichtigsten Aktionen für diesen Workflow lauten wie folgt:

  • Init: Initialisieren eines Arbeitsverzeichnisses mit Terraform-Konfigurationsdateien
  • Plan: Erzeugen eines Plans zum Ändern von Ressourcen entsprechend der aktuellen Konfiguration
  • Apply: Anwenden der vom Plan beschriebenen Änderungen

State

State teilt Terraform mit, welche Azure-Ressourcen hinzugefügt, aktualisiert oder gelöscht werden sollen.

Terraform verwendet den Zustand zum Erstellen von Plänen und zum Vornehmen von Änderungen an Ihrer Infrastruktur. Vor jedem Vorgang führt Terraform eine Aktualisierung durch, um den Zustand anhand der tatsächlichen Infrastruktur zu aktualisieren.

Der Zustand wird standardmäßig in einer lokalen Textdatei namens terraform.tfstate gespeichert. Terraform verwaltet diese Datei mithilfe der Workflowaktionen, die Sie in Ihren Modulen definieren.

Sie können den Zustand auch remote speichern, ein Ansatz, der in einer Teamumgebung besser funktioniert. Weitere Informationen zur Remoteverwaltung des Zustands finden Sie in der Einheit „Zusammenfassung“ am Ende dieses Moduls.

Nächste Schritte

In der nächsten Lerneinheit wird die Verwendung von Terraform mit GitHub Actions oder Azure Pipelines zum Provisionieren und Bereitstellen Ihrer Anwendungen erläutert.