Terraform-Projektinitialisierung

LinuxBeginner
Jetzt üben

Einführung

Terraform ist ein beliebtes Open-Source-Tool für Infrastructure as Code (IaC), das von HashiCorp entwickelt wurde. Es ermöglicht Ihnen, Infrastrukturressourcen mithilfe einer deklarativen Konfigurationssprache zu definieren und bereitzustellen.

Der erste Befehl, den Sie in jedem neuen Terraform-Projekt ausführen, ist terraform init. Dieser Befehl ist entscheidend, da er Ihr Arbeitsverzeichnis für die Verwendung mit Terraform vorbereitet. Er führt mehrere wichtige Aktionen aus:

  • Backend-Initialisierung: Konfiguriert das Backend für die Speicherung des Zustands (State).
  • Installation von Provider-Plugins: Scannt Ihre Konfigurationsdateien, ermittelt die benötigten Provider und lädt diese aus der Terraform Registry herunter.
  • Modul-Installation: Lädt alle in Ihrer Konfiguration referenzierten Module herunter.

In diesem Lab lernen Sie den grundlegenden Prozess der Initialisierung eines neuen Terraform-Projekts kennen. Sie erstellen ein Projektverzeichnis, definieren eine einfache Konfigurationsdatei und verwenden terraform init, um das erforderliche Provider-Plugin herunterzuladen.

Ein neues Verzeichnis für das Terraform-Projekt erstellen

In diesem Schritt erstellen Sie ein dediziertes Verzeichnis für Ihr neues Terraform-Projekt. Es ist eine bewährte Methode (Best Practice), jedes Terraform-Projekt in einem eigenen Verzeichnis zu halten, um Konflikte zu vermeiden und die Konfigurationen übersichtlich zu strukturieren. Alle Ihre Operationen finden innerhalb des Verzeichnisses ~/project statt.

Erstellen Sie zunächst ein neues Verzeichnis namens terraform-init-lab.

mkdir terraform-init-lab

Navigieren Sie anschließend in das neu erstellte Verzeichnis. Dies wird Ihr Arbeitsverzeichnis für den Rest des Labs sein.

cd terraform-init-lab

Ihr Terminal-Prompt sollte nun anzeigen, dass Sie sich im Verzeichnis ~/project/terraform-init-lab befinden.

Die Datei main.tf im Projektverzeichnis erstellen

In diesem Schritt erstellen Sie die Hauptkonfigurationsdatei für Ihr Projekt. Terraform-Konfigurationsdateien verwenden die Dateiendung .tf und sind in der HashiCorp Configuration Language (HCL) geschrieben. Üblicherweise wird die primäre Konfigurationsdatei main.tf genannt.

Erstellen Sie innerhalb Ihres terraform-init-lab-Verzeichnisses eine leere Datei namens main.tf mit dem Befehl touch.

touch main.tf

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

ls

Sie sollten die Datei main.tf in der Ausgabe sehen.

main.tf

Lokale Provider-Konfiguration in main.tf definieren

In diesem Schritt fügen Sie Konfigurationscode zu Ihrer main.tf-Datei hinzu. Dieser Code teilt Terraform mit, welchen Provider es herunterladen und verwenden soll. Ein Provider ist ein Plugin, das es Terraform ermöglicht, mit einer bestimmten API zu interagieren, beispielsweise mit einem Cloud-Anbieter oder einem SaaS-Dienst.

Für dieses Lab verwenden wir den local-Provider, mit dem Sie lokale Dateien verwalten können. Er eignet sich hervorragend zum Lernen, da er keine Cloud-Zugangsdaten erfordert.

Öffnen Sie die Datei main.tf mit dem Texteditor nano.

nano main.tf

Kopieren Sie nun den folgenden Codeblock und fügen Sie ihn in den nano-Editor ein. Dieser terraform-Block spezifiziert die für das Projekt erforderlichen Provider.

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

Diese Konfiguration teilt Terraform Folgendes mit:

  • required_providers: Wir deklarieren die Provider, die dieses Projekt benötigt.
  • local: Der lokale Name, den wir dem Provider geben.
  • source: Die globale Adresse des Providers in der Terraform Registry, welche hashicorp/local lautet.
  • version: Die spezifische Version des zu verwendenden Providers.

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

terraform init ausführen, um das Projekt zu initialisieren

In diesem Schritt führen Sie den Befehl terraform init aus. Mit der vorhandenen Provider-Konfiguration weiß Terraform nun, was zur Initialisierung des Projekts zu tun ist. Es liest die Datei main.tf, findet den required_providers-Block und lädt die angegebene Version des hashicorp/local-Providers aus der Terraform Registry herunter.

Stellen Sie sicher, dass Sie sich noch im Verzeichnis terraform-init-lab befinden, und führen Sie dann den Initialisierungsbefehl aus.

terraform init

Sie werden eine Ausgabe sehen, die anzeigt, dass Terraform das Backend und die Provider-Plugins initialisiert. Eine erfolgreiche Initialisierung endet mit einer Erfolgsmeldung.

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 created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Das Verzeichnis .terraform auf heruntergeladene Plugins prüfen

In diesem Schritt überprüfen Sie, ob terraform init das Provider-Plugin erfolgreich heruntergeladen hat. Der Befehl erstellt ein verstecktes Verzeichnis namens .terraform in Ihrem Projektordner, um diese Plugins und andere Initialisierungsdaten zu speichern.

Listen Sie zunächst alle Dateien und Verzeichnisse auf, einschließlich der versteckten, um die neuen Artefakte zu sehen, die durch den init-Befehl erstellt wurden.

ls -a

Sie sollten das Verzeichnis .terraform und eine Datei .terraform.lock.hcl in der Ausgabe sehen. Die Lock-Datei protokolliert die während der Initialisierung ausgewählten Provider-Versionen.

.  ..  main.tf  .terraform  .terraform.lock.hcl

Lassen Sie uns nun den Inhalt des Verzeichnisses .terraform untersuchen, um den heruntergeladenen Provider zu sehen. Sie können den Befehl tree für eine klare, hierarchische Ansicht verwenden.

tree .terraform

Die Ausgabe zeigt die Verzeichnisstruktur, in der das Provider-Plugin gespeichert ist. Sie können die ausführbare Datei für den local-Provider sehen, die aus der Registry heruntergeladen wurde.

.terraform
└── providers
    └── registry.terraform.io
        └── hashicorp
            └── local
                └── 2.4.0
                    └── linux_amd64
                        └── terraform-provider-local_v2.4.0_x5

6 directories, 1 file

Dies bestätigt, dass terraform init Ihr Projekt erfolgreich mit dem erforderlichen Provider eingerichtet hat.

Zusammenfassung

Herzlichen Glückwunsch! Sie haben dieses Lab zur Terraform-Projektinitialisierung erfolgreich abgeschlossen.

In diesem Lab haben Sie die wesentlichen ersten Schritte zum Starten eines neuen Terraform-Projekts gelernt. Sie haben geübt:

  • Ein dediziertes Verzeichnis für ein Terraform-Projekt zu erstellen.
  • Erforderliche Provider in einer main.tf-Konfigurationsdatei zu definieren.
  • Den Befehl terraform init auszuführen, um das Projekt vorzubereiten.
  • Zu überprüfen, ob die Provider-Plugins in das Verzeichnis .terraform heruntergeladen wurden.

Nachdem Ihr Projekt initialisiert wurde, sind Sie nun bereit für die nächsten Schritte im Terraform-Workflow, wie z. B. das Schreiben von Ressourcendefinitionen und die Verwendung von terraform plan und terraform apply, um Ihre Infrastruktur zu verwalten.