Lesson 0003 · groupdir-infra

Terraform und OpenTofu

Was Infrastructure as Code hier bedeutet, warum es zwei Projekte gibt, und weshalb im Repo tofu steht.

Einleitung

Nach DNS (Lesson 0002) kommt öffentliches DNS bei Hetzner über den Stack unter tofu/. Bevor du Plan und Apply übst, brauchst du das mentale Modell: deklarative Infra, State, und das Verhältnis Terraform ↔ OpenTofu.

Primärquellen: OpenTofu Getting started und die Linux-Foundation-Ankündigung zu OpenTofu.

Was Terraform / OpenTofu tun

Beide sind Infrastructure as Code: Du beschreibst den gewünschten Zustand von Cloud- und API-Ressourcen in Dateien (bei uns HCL bzw. generierte JSON). Das Tool spricht über Provider mit den APIs und bringt Reality in Richtung Config.

Kern-Workflow (Write → Plan → Apply), siehe OpenTofu Intro:

  • Write: Ressourcen in Config deklarieren
  • Plan: Vorschau, was sich ändern würde (ohne Apply)
  • Apply: genehmigte Änderungen ausführen

Der State merkt, welche Remote-Objekte das Tool bereits verwaltet. Ohne State wüsste es nicht, was „schon da“ ist.

Besonderheiten (Merkliste)

  • Deklarativ: Du beschreibst den Soll-Zustand, nicht eine Shell-Checkliste „erst create, dann update“.
  • Plan vor Apply: Änderungen sind reviewbar; nichts muss blind gegen die API laufen.
  • State als Buchführung: Drift und versehentliches Doppel-Anlegen werden darüber erkennbar (vorsichtig mit manuellem Klicken in der Cloud-Konsole).
  • Provider: Ein Plugin pro API. In groupdir-infra u. a. Hetzner für öffentliches DNS.
  • Nicht für NixOS-Hosts: Server-Config und Deploy laufen über Nix/Colmena. Terraform hier vor allem für externe APIs (DNS, Proxmox-Bootstrap).

Warum Terraform und OpenTofu?

Lange war Terraform (HashiCorp) unter einer echten Open-Source-Lizenz (MPL) der De-facto-Standard. 2023 stellte HashiCorp die Lizenz auf die Business Source License (BSL) um. Daraufhin forkte die Community den letzten MPL-Stand zu OpenTofu und brachte das Projekt unter die Linux Foundation (Neutrale Governance, wieder klar open source unter MPL).

Kurz: zwei Produkte, gemeinsamer Ursprung. Terraform bleibt das HashiCorp-Produkt (BSL). OpenTofu ist der community-getriebene Fork. Für den Alltag im Kurs reicht: dieselben Konzepte (State, Plan, Apply, Provider, HCL).

Drop-in Replacement

OpenTofu ist als Drop-in Replacement für typische Terraform-Workflows gedacht: bestehende Configs und der Write/Plan/Apply-Ablauf bleiben weitgehend gleich; die ausführbare Datei heißt tofu statt terraform.

Deshalb sprechen die Lessons von Terraform-Begriffen (wie in vielen Docs und Jobanzeigen), während groupdir-infra in der Dev-Shell opentofu / tofu liefert. Du lernst ein Vokabular, bedienst die CLI, die im Repo wirklich liegt.

Im Repo: Ordner tofu/, Befehle tofu -chdir=tofu/dns …. Details und Übung: Lesson 0004.

Üben

Retrieval

Was beschreibt der IaC-Ansatz von Terraform/OpenTofu?

Warum gibt es OpenTofu zusätzlich zu Terraform?

Was meint „Drop-in Replacement“ für diesen Kurs?

Primärquelle

OpenTofu Getting started und Linux Foundation: Announcing OpenTofu.

Kompakt im Glossar: Terraform.