Benutzerdefinierte Provider entwickeln
Erweitern Sie Terraform über bestehende Integrationen hinaus, indem Sie die Funktionsweise von Providern verstehen und mit dem Terraform Plugin Framework einen eigenen Provider entwickeln.
Benutzerdefinierte Provider entwickeln ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.
Wenn vorhandene Provider nicht ausreichen
Die Registry deckt die meisten Plattformen ab, aber Unternehmen betreiben häufig interne APIs ohne Provider. Mit einem benutzerdefinierten Provider kann Terraform diese Ressourcen über denselben Plan-/Apply-Lebenszyklus verwalten.
Wie Provider funktionieren
Ein Provider ist eine separate Plugin-Binärdatei, die Terraform startet und über gRPC anspricht. Das Plugin übersetzt die CRUD-Operationen von Terraform in API-Aufrufe an das Zielsystem.
Das Plugin Framework
Das moderne Terraform Plugin Framework (Go) von HashiCorp ist der empfohlene Weg, Provider zu entwickeln, und ersetzt das ältere SDKv2. Provider werden in Go geschrieben.
import (
"github.com/hashicorp/terraform-plugin-framework/provider"
)Den Provider definieren
Der Provider-Typ legt seinen Namen sowie die von ihm angebotenen Ressourcen und Datenquellen fest.
type widgetProvider struct{}
func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
resp.TypeName = "widget"
}Das Ressourcenschema
Jede Ressource definiert ein Schema aus Attributen mit Typen und Metadaten. Diese Werte legen die Nutzenden in ihrem HCL-Code fest.
resp.Schema = schema.Schema{
Attributes: map[string]schema.Attribute{
"name": schema.StringAttribute{Required: true},
"id": schema.StringAttribute{Computed: true},
},
}CRUD implementieren
Eine Ressource implementiert Create, Read, Update und Delete. Jede Methode ruft Ihre API auf und schreibt das Ergebnis zurück in den Terraform-Status.
func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// call API, then save state
}Read hält den Status aktuell
Die Methode Read aktualisiert den Status anhand der echten API. Wenn die entfernte Ressource nicht mehr vorhanden ist, entfernen Sie sie aus dem Status, damit Terraform ihre Neuerstellung plant.
Akzeptanztests
Provider verwenden Akzeptanztests, die echte Plan-/Apply-Zyklen in einer Testumgebung ausführen. Sie werden über eine Umgebungsvariable gesteuert, damit sie nicht versehentlich laufen.
TF_ACC=1 go test ./... -vLokale Entwicklungsüberschreibung
Um einen Provider vor der Veröffentlichung zu testen, verwenden Sie eine dev override in Ihrer CLI-Konfiguration. Dadurch lädt Terraform Ihre lokale Binärdatei, statt sie aus einer Registry herunterzuladen.
provider_installation {
dev_overrides {
"acme/widget" = "/home/dev/go/bin"
}
direct {}
}Den Provider veröffentlichen
Veröffentlichen Sie den Provider in der Registry, indem Sie ein Release mit einem Tag versehen und die Binärdateien mit einem GPG-Schlüssel signieren. Nutzende deklarieren ihn anschließend in required_providers.
terraform {
required_providers {
widget = {
source = "acme/widget"
version = "~> 1.0"
}
}
}Überlegungen zur Wartung
Ein Provider ist eine langfristige Verpflichtung: API-Änderungen, Versionskompatibilität und Dokumentation müssen laufend gepflegt werden. Für einmalige Anforderungen sind die Datenquelle external oder ein Skript möglicherweise einfacher als ein vollständiger Provider.
Kurzer Check
Testen Sie Ihr Wissen über benutzerdefinierte Provider.
Zusammenfassung: Terraform erweitern
Sie haben gelernt, benutzerdefinierte Provider zu entwickeln:
- Provider sind Go-Plugins, die über gRPC mit dem Kern kommunizieren.
- Das Plugin Framework definiert Schemas und CRUD-Methoden.
- Dev-Überschreibungen ermöglichen lokale Tests; Akzeptanztests überprüfen das Verhalten.
- Für die Veröffentlichung sind Tags und signierte Binärdateien erforderlich.
Häufig gestellte Fragen
Ist die Lektion „Benutzerdefinierte Provider entwickeln“ kostenlos?
Ja — der vollständige Text von „Benutzerdefinierte Provider entwickeln“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Terraform Infrastructure as Code-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Benutzerdefinierte Provider entwickeln“?
Erweitern Sie Terraform über bestehende Integrationen hinaus, indem Sie die Funktionsweise von Providern verstehen und mit dem Terraform Plugin Framework einen eigenen Provider entwickeln. Du übst Terraform Infrastructure as Code mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Terraform Infrastructure as Code zu starten?
Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Benutzerdefinierte Provider entwickeln“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?
Ja. Jede Terraform Infrastructure as Code-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Multi-Cloud- und Hybrid-Cloud-Muster
- Sentinel-Richtlinien für Governance
- Terraform Cloud und Enterprise
- Benutzerdefinierte Provider entwickeln