Terraform · OpenTofu · Crossplane
Infrastructure as Code: Terraform- und OpenTofu-Beratung
Ihre Umgebung als Code: neu aufbaubar, im Pull Request prüfbar und ohne Angst vor dem nächsten Apply. Wir bringen State, Module, Pipeline und Policies in einen Zustand, den Ihr Team selbst weiterentwickeln kann.
- Remote-State mit Sperre
- Plan im Pull Request, Apply nach Freigabe
- Policy-Prüfung und Drift-Erkennung
01Ausgangslage
Wenn die Umgebung nur noch in den Köpfen existiert
SKAFFON berät und baut Infrastructure as Code für Unternehmen, die Cloud- und Kubernetes-Umgebungen reproduzierbar, prüfbar und per Pull Request änderbar betreiben wollen. Wir arbeiten mit Terraform und OpenTofu, und wo es passt mit Crossplane.
Die Seite richtet sich an Platform- und Infrastruktur-Teams. Wer den größeren Rahmen aus Pipelines, GitOps und Release sucht, findet ihn in der DevOps-Beratung.
- Infrastruktur wurde über Konsolen angeklickt; niemand kann die Umgebung neu aufbauen.
- State liegt lokal oder in einem ungesicherten Bucket, und zwei Personen können gleichzeitig anwenden.
- Ein Modul wurde kopiert und pro Umgebung leicht verändert; Änderungen müssen mehrfach eingepflegt werden.
- Niemand weiß, ob die reale Umgebung noch dem Code entspricht.
- Zugangsdaten stehen in Variablen oder im State.
02Vorgehen
Von der Handarbeit zum reviewbaren Code in sieben Schritten
Bestehende, manuell erstellte Ressourcen können wir übernehmen (Import); das ist Aufwand und wird im Angebot gesondert ausgewiesen.
- 01
Bestandsaufnahme
Ergebnis: ÜbernahmeplanWas ist Code, was ist Handarbeit, was ist Drift? Das Ergebnis ist ein Übernahmeplan mit Priorisierung.
- 02
Modulkonzept
Ergebnis: ModulbibliothekWiederverwendbare Module mit klarer Schnittstelle, Versionierung und Tests; Trennung von Umgebungen.
- 03
State-Betrieb
Ergebnis: sicheres BackendRemote-Backend, Sperre, Zugriffsmodell, Sicherung und Aufteilung nach Blast Radius, wie im Layout unten gezeigt.
- 04
Pipeline
Ergebnis: ÄnderungsablaufPlan im Pull Request, Apply nach Freigabe, zum Beispiel mit GitLab CI oder GitHub Actions (CI/CD-Pipelines) oder mit Atlantis, das laut Dokumentation Terraform und OpenTofu mit Locking und Autoplanning unterstützt.
- 05
Policy und Drift
Ergebnis: Regeln als CodeRegeln als Code, die vor dem Apply prüfen, und ein regelmäßiger Abgleich von Soll und Ist.
- 06
Secrets
Ergebnis: Secrets-KonzeptKeine Klartext-Geheimnisse im Repository, Anbindung an einen Secret-Store und ein Umgang mit sensiblen Werten im State.
- 07
Übergabe
Ergebnis: Ihr Team kann esDokumentation, Runbooks und Schulung. Ihr Team soll Module selbst weiterentwickeln.
03Werkzeugwahl
Terraform, OpenTofu oder Crossplane: wofür welches Werkzeug
Die Matrix ist ein Bewertungsraster, keine Rangliste. Lizenz- und Roadmap-Details der Werkzeuge ändern sich; prüfen Sie sie in der jeweiligen Dokumentation.
| Frage | Terraform / OpenTofu | Crossplane |
|---|---|---|
| Arbeitsweise | Plan/Apply-Zyklus aus Dateien mit State | Kubernetes-Ressourcen (Composition, Managed Resources); laut Crossplane-Dokumentation ein „control plane framework for platform engineering“ |
| Wo läuft die Logik? | In CI-Läufen oder auf Anfrage | Im Kubernetes-Cluster, über die Kubernetes-API |
| Wann passt es? | Fundament: Konten, Netzwerke, Cluster, Landing Zones | Self-Service-Bereitstellung aus Kubernetes heraus, zum Beispiel im Rahmen einer Developer-Plattform |
| Voraussetzung | Sicherer State-Betrieb | Ein bereits betriebener Kubernetes-Verwaltungscluster |
| Typischer Fehler | Alles in einem State, großer Blast Radius | Plattform-API zu früh und zu groß entworfen |
In der Praxis kombinieren wir beides: Fundament mit Terraform oder OpenTofu, Self-Service-Schicht darüber, wenn eine Plattformstrategie es rechtfertigt. Die Wahl zwischen Terraform und OpenTofu treffen wir nach Ihren Lizenz- und Betriebsvorgaben; beide folgen dem Schreib-, Plan- und Apply-Ablauf. Auf Azure ist Bicep eine Option, siehe Azure-Beratung.
04Repository-Layout
Ein State je Lebenszyklus: so schneiden wir das Repository
Die Struktur trennt wiederverwendbare Module von umgebungsspezifischer Komposition. Jede Umgebungskomponente hat einen eigenen State, damit ein Fehler nicht die gesamte Plattform betrifft.
infra/
modules/ # versionierte, getestete Bausteine
network/
kubernetes-cluster/
postgres/
live/
prod/
network/ # eigener State
cluster/ # eigener State, liest Outputs aus network
data/
staging/
network/
cluster/
policies/ # Policy als Code, im Pull Request geprüft
.ci/ # Plan im PR, Apply nach Freigabe
- Ein State je Lebenszyklus und Zuständigkeit. Netzwerk ändert sich selten, Anwendungsressourcen oft; getrennte States begrenzen den Schaden eines fehlerhaften Apply.
- Module versionieren. Umgebungen referenzieren feste Modulversionen; ein Update ist ein bewusster Pull Request.
- Keine Kopien pro Umgebung. Unterschiede laufen über Variablen, nicht über Forks von Modulen.
05
Module, States und Änderungsablauf im Zusammenhang
06State-Audit
Sechs Prüfpunkte, an denen sich sicherer State-Betrieb zeigt
OpenTofu speichert den Zustand standardmäßig in einer lokalen Datei und empfiehlt für Teams eine Lösung, die State versioniert, verschlüsselt und sicher teilt. Wir prüfen:
- Remote-Backend vorhanden. Kein lokaler State auf Arbeitsplätzen.
- Sperre wirksam. Nicht jedes Backend unterstützt Sperren; das steht laut OpenTofu-Dokumentation in der Doku des jeweiligen Backends. Beispiel STACKIT: Laut README des STACKIT-Terraform-Providers (Stand der Prüfung: 13.11.2026) hat die S3-Option
use_lockfilemit STACKIT Object Storage keine Wirkung; empfohlen wird ein PostgreSQL-Backend für die State-Sperre. Prüfen Sie diesen Hinweis vor der Umsetzung gegen die aktuelle Provider-Dokumentation. - Zugriff nach minimalen Rechten. State kann sensible Werte enthalten; Lesezugriff gilt als sensibel.
- Sicherung und Wiederherstellung des State getestet.
- Beta- und Experimentierfunktionen kennen. Der STACKIT-Provider kennzeichnet einzelne Ressourcen als Beta oder Experiment ohne Support-Zusage; solche Ressourcen setzen wir nur bewusst und dokumentiert ein.
- Drift-Lauf geplant und Ergebnis wird einer Person zugewiesen.
07Zugriff und Grenzen
Der Apply läuft mit Ihren Rechten, nicht mit unseren
Zugangsdaten bleiben bei Ihnen; Pipelines erhalten nur die Rechte, die der Apply benötigt. Wir arbeiten in Ihren Repositories und Konten, zeitlich und rollenbasiert begrenzt.
Policy-Prüfung unterstützt Ihre Vorgaben, ersetzt aber keine Compliance-Bewertung. Technische Absicherung finden Sie unter Cloud Security.
08Passung
Wann sich ein IaC-Projekt nicht lohnt
Das passt
- Mehrere Umgebungen oder Plattformen, die sich häufig ändern und reproduzierbar sein müssen.
- Verantwortliche für Plattform und Sicherheit sind benannt und tragen den Betrieb mit.
Das passt nicht
- Sie haben eine einzelne, selten geänderte Umgebung; der Aufwand für eine Modulstruktur lohnt sich nicht.
- Sie wollen ein Werkzeug gekauft bekommen, ohne Verantwortliche für den Betrieb zu benennen.
- Sie suchen reine Schulung; für Cloud-native Lernpfade siehe GoldenKube, ein separates Produkt.
09Voraussetzungen
Zugänge und Unterlagen, die den IaC-Start ermöglichen
- Lesender Zugriff auf Ihre Konten oder Projekte
- Vorhandener Code und State
- Liste der Plattformen, zum Beispiel STACKIT, AWS, Azure, Google Cloud, Proxmox, Kubernetes
- Ihre Freigabe- und Compliance-Vorgaben
- Das eingesetzte Quellcode- und CI-System
- Verantwortliche für Plattform und Sicherheit
10Aufwand
Was den Aufwand eines IaC-Projekts bestimmt
Den Aufwand bestimmen die Zahl der Plattformen und Umgebungen, der Umfang des Imports vorhandener Ressourcen, der Modulbedarf, Policy- und Freigabeanforderungen sowie der Anteil von Beratung, Umsetzung und Schulung.
Wie sieht Ihr State heute aus?
Beschreiben Sie Ihre Umgebung und den heutigen Umgang mit State; wir sagen Ihnen, womit die Übernahme beginnt.