Grundlegende Ressourcenerstellung mit Terraform

LinuxBeginner
Jetzt üben

Einführung

Terraform ist ein Open-Source Infrastructure as Code (IaC)-Tool, das von HashiCorp entwickelt wurde. Es ermöglicht Ihnen, Rechenzentrumsinfrastruktur mithilfe einer deklarativen Konfigurationssprache zu definieren und bereitzustellen. Das bedeutet, Sie beschreiben Ihre gewünschte Infrastruktur in Konfigurationsdateien, und Terraform ermittelt, wie Ressourcen erstellt, aktualisiert oder gelöscht werden müssen, um diesen Zustand zu erreichen.

Der Kern-Workflow von Terraform besteht aus drei Hauptphasen:

  1. Schreiben (Write): Infrastruktur als Code erstellen.
  2. Planen (Plan): Änderungen vor der Anwendung überprüfen.
  3. Anwenden (Apply): Ihre Infrastruktur bereitstellen und verwalten.

In diesem Lab durchlaufen Sie diesen gesamten Workflow, indem Sie eine sehr einfache Ressource erstellen: eine lokale Datei. Die Verwendung des local-Providers ist eine ausgezeichnete Methode, um die Mechanik von Terraform zu erlernen, ohne Anmeldeinformationen für einen Cloud-Provider zu benötigen. Sie werden eine Datei definieren, deren Erstellung planen, die Änderungen anwenden und das Ergebnis überprüfen.

Definieren einer local_file-Ressource in main.tf

In diesem Schritt beginnen Sie mit der Definition einer Ressource in Ihrer Terraform-Konfigurationsdatei. Alle Terraform-Konfigurationen werden in Dateien mit der Endung .tf geschrieben. Die Hauptkonfigurationsdatei wird üblicherweise main.tf genannt.

Ein resource-Block ist die primäre Syntax zur Deklaration eines Infrastruktur-Objekts. Er definiert eine Ressource eines gegebenen Typs (z. B. local_file) mit einem gegebenen lokalen Namen (z. B. example). Die Kombination aus Typ und Name muss innerhalb eines Moduls eindeutig sein.

Öffnen Sie zunächst die Datei main.tf in Ihrem Verzeichnis ~/project mit dem Texteditor nano.

nano main.tf

Fügen Sie nun den folgenden Code in die Datei ein. Dieser definiert eine Ressource vom Typ local_file und gibt ihr den lokalen Namen example. Vorerst ist der Ressourcenblock leer.

resource "local_file" "example" {
}

Nachdem Sie den Code hinzugefügt haben, speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, dann Y und schließlich Enter drücken.

Dateiname und Inhalt im Ressourcenblock festlegen

In diesem Schritt fügen Sie dem Ressourcenblock Argumente hinzu, um die Eigenschaften der zu erstellenden Datei festzulegen. Argumente sind die Schlüssel-Wert-Paare innerhalb eines Ressourcenblocks, die dessen Konfiguration definieren. Für eine local_file-Ressource sind die beiden wichtigsten Argumente filename und content.

  • filename: Der Pfad zu der Datei, die erstellt werden soll.
  • content: Der Inhalt, der in die Datei geschrieben werden soll.

Öffnen Sie die Datei main.tf erneut mit nano.

nano main.tf

Ändern Sie den local_file-Ressourcenblock so, dass er die Argumente filename und content enthält, wie unten gezeigt.

resource "local_file" "example" {
  content  = "Hello, Terraform!"
  filename = "${path.module}/hello.txt"
}

Hier weisen wir Terraform an, eine Datei namens hello.txt im aktuellen Projektverzeichnis zu erstellen. ${path.module} ist ein spezieller Terraform-Ausdruck, der sich zum Pfad des aktuellen Moduls auflöst, was in diesem Fall ~/project ist. Der Inhalt der Datei wird der String "Hello, Terraform!" sein.

Speichern Sie die Datei und beenden Sie nano, indem Sie Ctrl+X, Y und Enter drücken.

Terraform initialisieren und Änderungen vorschauen

In diesem Schritt initialisieren Sie zunächst Ihr Terraform-Projekt und führen dann den Befehl terraform plan aus, um einen Ausführungsplan zu erstellen.

Bevor Sie Änderungen planen können, müssen Sie das Projekt initialisieren. Der Befehl terraform init scannt Ihre Konfiguration, lädt die erforderlichen Provider (in diesem Fall für local_file) herunter und richtet das Backend ein.

Führen Sie in Ihrem Terminal zuerst terraform init aus:

terraform init

Nach erfolgreicher Initialisierung führen Sie terraform plan aus. Dieser Befehl ist ein entscheidender Teil des Terraform-Workflows, da er eine "Trockenübung" (Dry Run) der Änderungen liefert. Er zeigt Ihnen, was Terraform mit Ihrer Infrastruktur tun wird, ohne tatsächlich Änderungen vorzunehmen. Dies ermöglicht es Ihnen, die beabsichtigten Aktionen zu überprüfen und zu validieren, bevor sie angewendet werden.

terraform plan

Terraform liest Ihre Konfigurationsdatei und vergleicht sie mit dem aktuellen Zustand Ihrer Infrastruktur (der derzeit leer ist). Anschließend wird ein Aktionsplan angezeigt. Sie sollten eine Ausgabe sehen, die der folgenden ähnelt und anzeigt, dass eine Ressource erstellt wird.

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "Hello, Terraform!"
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Das Symbol + neben resource "local_file" "example" signalisiert, dass diese Ressource erstellt wird. Die Ausgabe zeigt alle Attribute an, die auf der neuen Datei festgelegt werden.

Führen Sie terraform apply aus, um die Ressource zu erstellen

In diesem Schritt wenden Sie die Änderungen mithilfe des Befehls terraform apply an, um die Datei tatsächlich zu erstellen. Dieser Befehl führt die im terraform plan-Output vorgeschlagenen Aktionen aus.

Standardmäßig zeigt terraform apply Ihnen den Plan erneut an und bittet um eine interaktive Bestätigung, bevor fortgefahren wird. Um ihn nicht-interaktiv zu gestalten, was für Labs und Automatisierung nützlich ist, können Sie das Flag -auto-approve verwenden.

Führen Sie den folgenden Befehl in Ihrem Terminal aus:

terraform apply -auto-approve

Terraform führt nun den Plan aus. Die Ausgabe zeigt zuerst erneut den Plan an, gefolgt vom Fortschritt der Anwendung. Sobald dies abgeschlossen ist, sehen Sie eine Bestätigungsnachricht.

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  ## local_file.example will be created
  + resource "local_file" "example" {
      + content              = "Hello, Terraform!"
      + content_base64sha256 = (known after apply)
      + content_base64sha512 = (known after apply)
      + content_md5          = (known after apply)
      + content_sha1         = (known after apply)
      + content_sha256       = (known after apply)
      + content_sha512       = (known after apply)
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "./hello.txt"
      + id                   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.
local_file.example: Creating...
local_file.example: Creation complete after 0s [id=42086c02e03bf671ddf621ed9922f52f2c7a605c]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Die Meldung "Apply complete!" bestätigt, dass Terraform die Ressource erfolgreich gemäß Ihrer Konfiguration erstellt hat.

Überprüfen, ob die erstellte Datei im Dateisystem existiert

In diesem letzten Schritt überprüfen Sie, ob Terraform die Datei wie angegeben erfolgreich auf Ihrem lokalen Dateisystem erstellt hat. Da Sie die Ressource local_file verwendet haben, ist das Ergebnis eine physische Datei in Ihrem Projektverzeichnis.

Verwenden Sie zuerst den Befehl ls, um die Dateien im aktuellen Verzeichnis aufzulisten. Sie sollten nun hello.txt neben Ihrer Terraform-Konfigurationsdatei sehen.

ls

Erwartete Ausgabe:

hello.txt  main.tf  terraform.tfstate

Als Nächstes verwenden Sie den Befehl cat, um den Inhalt der neu erstellten Datei hello.txt anzuzeigen.

cat hello.txt

Sie sollten den Inhalt sehen, den Sie in main.tf definiert haben.

Hello, Terraform!

Dies bestätigt, dass Ihre Terraform-Konfiguration erfolgreich angewendet wurde und die Ressource exakt so erstellt wurde, wie Sie sie in Ihrem Code definiert haben.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben Ihr erstes Terraform-Projekt erfolgreich abgeschlossen.

In diesem Lab haben Sie den grundlegenden Workflow von Terraform kennengelernt:

  1. Schreiben (Write): Sie haben eine local_file-Ressource in einer main.tf-Konfigurationsdatei definiert.
  2. Planen (Plan): Sie haben terraform plan verwendet, um die Erstellung der Datei in der Vorschau anzuzeigen, ohne Änderungen vorzunehmen.
  3. Anwenden (Apply): Sie haben terraform apply verwendet, um den Plan auszuführen und die Datei auf Ihrem lokalen Dateisystem zu erstellen.

Dieses einfache Beispiel zur Erstellung einer lokalen Datei demonstriert die Kernstärke von Infrastructure as Code (IaC). Sie haben den gewünschten Zustand einer Ressource in einer Konfigurationsdatei deklariert, und Terraform hat die Logik zur Erreichung dieses Zustands übernommen. Dieselben Prinzipien gelten beim Verwalten komplexerer Infrastrukturen, wie virtuellen Maschinen, Netzwerken und Datenbanken in der Cloud.