Verwendung von Terraform-Variablen

LinuxBeginner
Jetzt üben

Einführung

Terraform ist ein leistungsstarkes Werkzeug zur sicheren und effizienten Erstellung, Änderung und Versionierung von Infrastruktur. Ein Schlüsselelement, das Terraform-Konfigurationen flexibel und wiederverwendbar macht, ist die Verwendung von Eingabevariablen (Input Variables). Variablen ermöglichen es Ihnen, Ihre Konfigurationen zu parametrisieren, sodass Sie das Festkodieren von Werten vermeiden und Bereitstellungen einfach anpassen können, ohne den Quellcode ändern zu müssen.

In diesem Lab lernen Sie die Grundlagen der Verwendung von Terraform-Variablen kennen. Sie erstellen eine einfache Konfiguration, die eine lokale Datei generiert. Der Name und der Inhalt dieser Datei werden durch Variablen bestimmt, die Sie definieren und während der Ausführung Ihrer Terraform-Befehle übergeben.

Am Ende dieses Labs werden Sie verstehen:

  • Wie man Variablen in einer .tf-Datei deklariert.
  • Wie man Variablen innerhalb eines Ressourcenblocks referenziert.
  • Wie man Werte für Ihre Variablen bei der Ausführung von terraform apply bereitstellt.

Erstellen der Datei variables.tf für Variablendefinitionen

In diesem Schritt erstellen Sie eine dedizierte Datei, um Ihre Variablendeklarationen aufzubewahren. Obwohl Sie Variablen in jeder .tf-Datei deklarieren können, ist es gängige Konvention, sie in einer Datei namens variables.tf abzulegen. Diese Vorgehensweise hilft, Ihr Projekt organisiert zu halten und macht es anderen leicht zu verstehen, welche Eingabewerte Ihre Konfiguration erwartet.

Alle Ihre Arbeiten werden im Verzeichnis ~/project durchgeführt. Erstellen Sie zuerst die Datei variables.tf mit dem Befehl touch.

touch variables.tf

Sie können überprüfen, ob die Datei erstellt wurde, indem Sie den Inhalt des Verzeichnisses auflisten:

ls

Sie sollten variables.tf in der Ausgabe sehen.

variables.tf

Im Moment ist diese Datei leer. In den folgenden Schritten werden Sie ihr Variablendefinitionen hinzufügen.

Definieren einer String-Variable für den Dateinamen

In diesem Schritt definieren Sie Ihre erste Variable. Diese Variable wird verwendet, um den Namen der Datei festzulegen, die Terraform erstellen wird.

Variablen werden mithilfe eines variable-Blocks deklariert. Jeder Block definiert eine einzelne Eingabevariable. Definieren wir eine Variable namens filename.

Öffnen Sie die in dem vorherigen Schritt erstellte Datei variables.tf mit dem Editor nano.

nano variables.tf

Fügen Sie nun den folgenden Code in die Datei ein. Dieser Code deklariert eine Variable namens filename, legt ihren Typ als string fest und enthält eine hilfreiche Beschreibung.

variable "filename" {
  description = "The name of the file to create."
  type        = string
}
  • variable "filename": Dies startet die Deklaration einer Variablen mit dem Namen filename.
  • description: Dieses optionale Argument liefert eine für Menschen lesbare Beschreibung des Zwecks der Variablen.
  • type: Dieses Argument gibt den Datentyp für die Variable an. Hier verwenden wir string, um anzuzeigen, dass sie Textwerte akzeptiert.

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

Definieren einer String-Variable für den Inhalt

In diesem Schritt definieren Sie eine zweite Variable, um den Inhalt zu speichern, der in die Datei geschrieben werden soll. Dies folgt demselben Muster wie im vorherigen Schritt.

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

nano variables.tf

Fügen Sie den folgenden variable-Block unterhalb der zuvor hinzugefügten Definition der filename-Variable hinzu.

variable "content" {
  description = "The content to write into the file."
  type        = string
}

Ihre vollständige Datei variables.tf sollte nun wie folgt aussehen:

variable "filename" {
  description = "The name of the file to create."
  type        = string
}

variable "content" {
  description = "The content to write into the file."
  type        = string
}

Dies definiert zwei Eingabeparameter für Ihre Terraform-Konfiguration: einen für den Dateinamen und einen für dessen Inhalt.

Speichern Sie die Datei und beenden Sie nano (Ctrl+X, Y, Enter).

Referenzieren von Variablen im local_file Ressourcenblock

In diesem Schritt erstellen Sie die Haupt-Terraform-Konfigurationsdatei, main.tf, und verwenden die gerade definierten Variablen. Sie werden die Ressource local_file verwenden, die Teil des Providers hashicorp/local ist, um eine Datei im lokalen Dateisystem zu erstellen.

Erstellen Sie zuerst eine neue Datei mit dem Namen main.tf.

nano main.tf

Fügen Sie nun die folgende Konfiguration in die Datei main.tf ein.

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "2.4.0"
    }
  }
}

resource "local_file" "my_file" {
  filename = var.filename
  content  = var.content
}

Lassen Sie uns diese Konfiguration aufschlüsseln:

  • terraform { ... }: Dieser Block konfiguriert Terraform-Einstellungen, einschließlich der erforderlichen Provider. Wir teilen Terraform mit, dass unsere Konfiguration den Provider local benötigt.
  • resource "local_file" "my_file": Dies definiert eine Ressource vom Typ local_file und gibt ihr den lokalen Namen my_file.
  • filename = var.filename: Hier referenzieren Sie eine Variable. Das Präfix var. gefolgt vom Variablennamen (filename) weist Terraform an, den Wert der Variablen filename für dieses Argument zu verwenden.
  • content = var.content: Ebenso weist dies den Wert der Variablen content dem Argument content der Ressource zu.

Nachdem Sie den Code hinzugefügt haben, speichern Sie die Datei und beenden Sie nano (Ctrl+X, Y, Enter).

Ausführen von terraform apply mit Variablenwerten

In diesem letzten Schritt führen Sie Ihre Terraform-Konfiguration aus und übergeben Werte für Ihre Variablen.

Zuerst müssen Sie das Terraform-Arbeitsverzeichnis initialisieren. Der Befehl terraform init lädt und installiert die in der Konfiguration definierten Provider (in unserem Fall den Provider local).

Führen Sie den folgenden Befehl aus:

terraform init

Sie sollten eine Ausgabe sehen, die anzeigt, dass Terraform erfolgreich initialisiert wurde.

Initializing the backend...

Initializing provider plugins...
- Finding hashicorp/local versions matching "2.4.0"...
- Installing hashicorp/local v2.4.0...
- Installed hashicorp/local v2.4.0 (signed by HashiCorp)

Terraform has been successfully initialized!
...

Nun können Sie die Konfiguration anwenden (apply). Um Werte an Ihre Variablen zu übergeben, können Sie das Kommandozeilen-Flag -var verwenden. Wir werden auch das Flag -auto-approve verwenden, um die interaktive Bestätigungsaufforderung zu überspringen.

Führen Sie den Befehl terraform apply mit Werten für filename und content aus:

terraform apply -var="filename=hello.txt" -var="content=Hello, Terraform Variables." -auto-approve

Terraform wird nun den Plan ausführen und die Datei erstellen. Die Ausgabe wird in etwa wie folgt aussehen:

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.my_file will be created
  + resource "local_file" "my_file" {
      + content              = "Hello, Terraform Variables."
      + directory_permission = "0777"
      + file_permission      = "0777"
      + filename             = "hello.txt"
      + id                   = "..."
    }

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

local_file.my_file: Creating...
local_file.my_file: Creation complete after 0s [id=...]

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

Um zu überprüfen, ob alles funktioniert hat, verwenden Sie den Befehl cat, um den Inhalt der neu erstellten Datei anzuzeigen.

cat hello.txt

Sie sollten den Inhalt sehen, den Sie in der Variablen bereitgestellt haben:

Hello, Terraform Variables.

Herzlichen Glückwunsch! Sie haben erfolgreich Terraform-Variablen verwendet, um eine Datei zu erstellen.

Zusammenfassung

In diesem Lab haben Sie den grundlegenden Workflow für die Verwendung von Variablen in Terraform kennengelernt. Sie haben erfolgreich eine Konfiguration parametrisiert, wodurch diese dynamischer und wiederverwendbarer wurde.

Sie haben gelernt, wie man:

  • Variablendeklarationen in einer dedizierten Datei variables.tf organisiert.
  • Variablen mithilfe des Blocks variable deklariert und dabei deren type (Typ) und description (Beschreibung) festlegt.
  • Variablen innerhalb von Ressourcenblöcken mithilfe der Syntax var.<variable_name> referenziert.
  • Ein Terraform-Projekt mit terraform init initialisiert, um notwendige Provider herunterzuladen.
  • Variablenwerte zur Laufzeit mithilfe des Flags -var beim Befehl terraform apply übergibt.

Dieses Wissen ist ein entscheidender Baustein für die Erstellung komplexerer und modularerer Infrastruktur als Code (Infrastructure as Code) mit Terraform.