Einführung
In der sich schnell entwickelnden Welt von Infrastructure as Code (IaC) hat sich OpenTofu als leistungsstarke Open-Source-Alternative zu Terraform herauskristallisiert und bietet eine offenere, von der Community gesteuerte und flexible Zukunft. Angenommen, Sie denken über einen Wechsel nach oder wollen einfach nur auf dem Laufenden bleiben. In diesem Fall führt Sie dieser Leitfaden durch alles, was Sie über die Migration von Terraform zu OpenTofu wissen müssen - von der Vorbereitung bis zur Nutzung der neuesten Funktionen.
OpenTofu vs. Terraform: Was ist der Unterschied?
Lizenzierung: Offen für alle vs. quelloffen
Der größte und wichtigste Unterschied zwischen OpenTofu und Terraform ist die Lizenzierung. OpenTofu ist Open-Source unter der MPL 2.0, während Terraform unter der BSL steht. Da OpenTofu Open-Source ist, wird OpenTofu von der Gemeinschaft betrieben, und dies ermöglicht es der Gemeinschaft, die Implementierung bestimmter Funktionen zu beeinflussen, ohne direkt von einem Anbieter beeinflusst zu werden. Terraform hingegen wird bei der Entwicklung neuer Funktionen direkt von seinem Hersteller, HashiCorp, beeinflusst.
OpenTofu bietet auch Statusverschlüsselung, eine Funktion, die die Terraform-Gemeinschaft seit fünf Jahren fordert, aber nie erhalten hat.
In diesem Artikel wird erklärt, wie Sie Ihren Status verschlüsseln können.
Darüber hinaus können Sie mit OpenTofu 1.8 eine frühe Variablenauswertung nutzen, d.h. Sie können die Vorteile von Variablen und Locals innerhalb Ihres Terraform-Blocks und innerhalb Ihrer Modulquellen und -versionen nutzen.
Während sich OpenTofu und Terraform weiterentwickeln, werden sie sich wahrscheinlich auseinanderentwickeln, was bedeutet, dass in Zukunft noch mehr wesentliche Unterschiede auftreten werden. OpenTofu 1.9.1 begann als eine Abspaltung von Terraform und behält die Kompatibilität bei, fügt aber auch neue Verbesserungen hinzu.
Zusätzliche Funktionen, die in OpenTofu 1.9.1 eingeführt wurden:
- Abwärtskompatibel mit Terraform 1.5+, einschließlich der meisten Module und Provider
- Schnellere Planungs- und Anwendungsleistung
- Verbesserte Handhabung von Statusdateien
- CLI-Verbesserungen und Fehlerbehebungen, die noch nicht in Terraform 1.7.1 enthalten sind.
- Vorteil: Sie erhalten eine vertraute Erfahrung mit einem potenziell leistungsfähigeren Werkzeug
Verpflichtung zur Abwärtskompatibilität
- OpenTofu zielt darauf ab, mit dem Terraform-Ökosystem (Anbieter, Module) kompatibel zu bleiben und gleichzeitig die Offenheit zu verbessern
- Vorteil: Einfacher Migrationspfad von Terraform mit geringen Unterbrechungen
Unabhängigkeit des Anbieters
- Keine Abhängigkeit von einem einzigen Anbieter (wie HashiCorp) für Werkzeuge, Updates oder Support
- Vorteil: Nachhaltiger für die langfristige Infrastrukturplanung

Vorbereitungen für die Migration
Schritt 1: Sichern Sie Ihre Statusdatei
Bevor Sie etwas unternehmen, sollten Sie immer eine Sicherungskopie Ihrer Statusdatei erstellen:
cp terraform.tfstate terraform.tfstate.backup
Oder bei Verwendung eines entfernten Status (z. B. S3):
aws s3 cp s3://your-bucket/path/to/terraform.tfstate ./terraform.tfstate.backup
Wie man zu OpenTofu migriert (Schritt für Schritt)
Schritt 2: Einbau
Installieren Sie OpenTofu über Homebrew (auf macOS):
brew install opentofu/opentofu/opentofu
Schritt 3: Initialisierung mit OpenTofu
Wenn Sie OpenTofu in einem bestehenden Terraform-Projekt verwenden:
tofu init
Dadurch wird das Backend neu initialisiert, Anbieter heruntergeladen und das Projekt vorbereitet.
Schritt 4: Infrastruktur planen und anwenden
Führen Sie einen Plan aus, um die Kompatibilität sicherzustellen:
tofu plan
Übernehmen Sie dann die Änderungen (falls vorhanden):
tofu apply
Dadurch wird sichergestellt, dass OpenTofu mit Ihrem bestehenden Status und Ihrer Konfiguration arbeitet.
Schritt 5: Upgrade auf OpenTofu 1.9.1 Funktionen
Aktualisieren Sie die gewünschte Version in main.tf:
terraform {
required_version = ">= 1.9.1"
}
Aktualisieren Sie dann Ihre Anbieter (falls erforderlich):
tofu init -upgrade
Und überprüfen Sie:
tofu validate
tofu plan
Aktivieren der Statusverschlüsselung (optional, aber empfohlen)
Aktivieren Sie in Ihrem Tofu-Block die Statusverschlüsselung mit einem Verschlüsselungsschlüssel (z. B. AWS KMS):
tofu {
state {
encryption = {
provider = "aws"
key_id = "arn:aws:kms:us-east-1:123456789012:key/xxxx-xxxx-xxxx"
}
}
}
Dann neu initialisieren und den Status verschlüsseln:
Tofu-Init
Tofu-Plan
Wie man zu Terraform zurückkehrt (falls erforderlich)
Sie können sicher zurück zu Terraform wechseln, wenn:
- Die Versionen der Anbieter sind kompatibel.
- Sie verwenden keine OpenTofu-eigenen Funktionen wie verschlüsselte Zustände oder frühzeitige Variablenauswertung.
Terraform-Init
Terraformplan
alias terraform='tofu'
Hinweise zur Migration und bewährte Praktiken
Wenn Sie zum Beispiel die Version v1.7.1 von OpenTofu verwenden und Ihre Terraform-Version dieselbe ist:
- Eine Aktualisierung der Anbieterversion ist nicht erforderlich.
- Wenn Sie z.B. auf 1.9.1 migrieren wollen, müssen Sie die Version des Terraform-Anbieters auf 1.9 aktualisieren. Einige Terraform-Funktionen werden von Tofu nicht unterstützt oder müssen aktualisiert werden.
- Wenn Sie den Lebenszyklus in einigen Ihrer Module verwenden, müssen Sie die Module zunächst aktualisieren/vorbereiten
Wenn Sie direkt v1.9.1 verwenden:
- Es gibt keine Probleme, wenn Sie die Terraform-Provider-Version direkt auf 1.9 aktualisieren und "tofu init/plan" mit Tofu-Version 1.9.1 ausführen und dann die Provider-Version auf 1.7 zurücksetzen und "terraform init/plan" ausführen. Die Zustandsdatei wird dabei nicht beschädigt!
Warum ITGix OpenTofu empfiehlt
Unter ITGixfördern wir nachhaltige, anbieterneutrale und flexible DevOps-Praktiken. OpenTofu verkörpert all diese Prinzipien. Seine Abwärtskompatibilität, die von der Community vorangetriebene Roadmap und die zusätzlichen Sicherheitsfunktionen machen es zu einer klugen Wahl für Teams, die langfristige IaC-Stabilität suchen.