Udvikling af brugerdefinerede providers
Udvid Terraform ud over eksisterende integrationer ved at forstå, hvordan providers fungerer, og udvikle en brugerdefineret provider med Terraform Plugin Framework.
Udvikling af brugerdefinerede providers er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Når eksisterende providere ikke rækker
Registry'et dækker de fleste platforme, men virksomheder kører ofte interne API'er uden en provider. En tilpasset provider lader Terraform administrere disse ressourcer med den samme plan-/apply-livscyklus.
Sådan fungerer providere
En provider er en separat plugin-binærfil, som Terraform starter og kommunikerer med via gRPC. Pluginnet oversætter Terraforms CRUD-operationer til API-kald mod målsystemet.
Plugin Framework
HashiCorps moderne Terraform Plugin Framework (Go) er den anbefalede måde at bygge providere på og erstatter det ældre SDKv2. Providere skrives i Go.
import (
"github.com/hashicorp/terraform-plugin-framework/provider"
)Definition af provideren
Providertypen erklærer dens navn samt de ressourcer og datakilder, den tilbyder.
type widgetProvider struct{}
func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
resp.TypeName = "widget"
}Ressourceskemaet
Hver ressource erklærer et skema med attributter, typer og metadata. Det er det, brugerne angiver i deres HCL.
resp.Schema = schema.Schema{
Attributes: map[string]schema.Attribute{
"name": schema.StringAttribute{Required: true},
"id": schema.StringAttribute{Computed: true},
},
}Implementering af CRUD
En ressource implementerer Create, Read, Update og Delete. Hver metode kalder dit API og skriver resultatet tilbage til Terraforms tilstand.
func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// call API, then save state
}Read holder tilstanden ærlig
Read-metoden opdaterer tilstanden fra det virkelige API. Hvis den eksterne ressource er væk, fjerner du den fra tilstanden, så Terraform planlægger at oprette den igen.
Acceptancetest
Providere bruger acceptancetest, der kører virkelige plan-/apply-cyklusser mod et testmiljø. De styres af en miljøvariabel, så de ikke køres ved et uheld.
TF_ACC=1 go test ./... -vLokal udviklingstilsidesættelse
Hvis du vil teste en provider før publicering, skal du bruge en dev override i din CLI-konfiguration, så Terraform indlæser din lokale binærfil i stedet for at downloade fra et registry.
provider_installation {
dev_overrides {
"acme/widget" = "/home/dev/go/bin"
}
direct {}
}Publicering af provideren
Publicér til registry'et ved at tagge en udgivelse og signere binærfilerne med en GPG-nøgle. Forbrugere erklærer den derefter i required_providers.
terraform {
required_providers {
widget = {
source = "acme/widget"
version = "~> 1.0"
}
}
}Overvejelser om vedligeholdelse
En provider er en langsigtet forpligtelse: API-ændringer, versionskompatibilitet og dokumentation skal alt sammen vedligeholdes. Til engangsbehov kan datakilden external eller et script være enklere end en komplet provider.
Hurtigt tjek
Test din viden om tilpassede providere.
Opsummering: Udvidelse af Terraform
Du har lært at bygge tilpassede providere:
- Providere er Go-plugins, der kommunikerer med kernen via gRPC.
- Plugin Framework definerer skemaer og CRUD-metoder.
- Dev overrides muliggør lokal testning, og acceptancetest bekræfter funktionaliteten.
- Publicering kræver tags og signerede binærfiler.
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “Udvikling af brugerdefinerede providers” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Udvikling af brugerdefinerede providers”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Udvikling af brugerdefinerede providers”?
Udvid Terraform ud over eksisterende integrationer ved at forstå, hvordan providers fungerer, og udvikle en brugerdefineret provider med Terraform Plugin Framework. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Udvikling af brugerdefinerede providers”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Mønstre til multicloud og hybrid cloud
- Sentinel-politikker til governance
- Terraform Cloud og Enterprise
- Udvikling af brugerdefinerede providers