Terraform Projektinitialisierung

LinuxBeginner
Jetzt üben

Einführung

Terraform ist ein beliebtes Open-Source Infrastructure as Code (IaC)-Tool, 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 werden, ist terraform init. Dieser Befehl ist entscheidend, da er Ihr Arbeitsverzeichnis für die Verwendung mit Terraform vorbereitet. Er führt mehrere wichtige Aktionen durch:

  • Backend-Initialisierung: Konfiguriert das State-Speicher-Backend.
  • Provider-Plugin-Installation: Scannt Ihre Konfigurationsdateien, ermittelt, welche Provider benötigt werden, 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.

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, jedes Terraform-Projekt in einem eigenen Verzeichnis zu halten, um Konflikte zu vermeiden und Konfigurationen organisiert zu halten. Alle Ihre Operationen werden sich innerhalb des Verzeichnisses ~/project befinden.

Erstellen Sie zuerst ein neues Verzeichnis mit dem Namen terraform-init-lab.

mkdir terraform-init-lab

Navigieren Sie als Nächstes in das neu erstellte Verzeichnis. Dies wird Ihr Arbeitsverzeichnis für den Rest des Labs sein.

cd terraform-init-lab

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

Erstellen der main.tf-Datei im Projektverzeichnis

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

Erstellen Sie aus dem Verzeichnis terraform-init-lab heraus mit dem Befehl touch eine leere Datei namens main.tf.

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 in Ihre Datei main.tf ein. Dieser Code teilt Terraform mit, welchen Provider es herunterladen und verwenden muss. Ein Provider ist ein Plugin, das es Terraform ermöglicht, mit einer spezifischen API zu interagieren, wie z.B. einem Cloud-Provider oder einem SaaS-Dienst (Software as a Service).

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-Anmeldeinformationen (Credentials) 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 definiert die für das Projekt erforderlichen Provider.

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

Diese Konfiguration weist Terraform an:

  • 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, nämlich hashicorp/local.
  • version: Die spezifische Version des zu verwendenden Providers.

Nach dem Einfügen des Codes speichern Sie die Datei und beenden nano, indem Sie Ctrl+O, dann Enter und schließlich Ctrl+X drücken.

Führen Sie terraform init aus, um das Projekt zu initialisieren

In diesem Schritt führen Sie den Befehl terraform init aus. Da die Provider-Konfiguration vorhanden ist, weiß Terraform nun, was zur Initialisierung des Projekts erforderlich ist. Es liest die Datei main.tf, findet den Block required_providers und lädt die angegebene Version des Providers hashicorp/local 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 sehen eine Ausgabe, 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.

Überprüfen des .terraform-Verzeichnisses auf heruntergeladene Plugins

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 durch den init-Befehl erstellten neuen Artefakte anzuzeigen.

ls -a

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

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

Überprüfen wir nun den Inhalt des Verzeichnisses .terraform, 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 an, in der das Provider-Plugin gespeichert ist. Sie können die ausführbare Datei für den aus der Registry heruntergeladenen local-Provider sehen.

.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 notwendigen 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 zur Einrichtung eines neuen Terraform-Projekts gelernt. Sie haben geübt:

  • Das Erstellen eines dedizierten Verzeichnisses für ein Terraform-Projekt.
  • Das Definieren erforderlicher Provider in einer main.tf-Konfigurationsdatei.
  • Das Ausführen des Befehls terraform init zur Vorbereitung des Projekts.
  • Das Überprüfen, ob die Provider-Plugins in das Verzeichnis .terraform heruntergeladen wurden.

Nachdem Ihr Projekt initialisiert ist, sind Sie nun bereit für die nächsten Schritte im Terraform-Workflow, wie das Schreiben von Ressourcen-Definitionen und die Verwendung von terraform plan und terraform apply zur Verwaltung Ihrer Infrastruktur.