Bygging av egendefinerte providere
Utvid Terraform utover eksisterende integrasjoner ved å forstå hvordan providere fungerer, og utvikle en egendefinert provider med Terraform Plugin Framework.
Bygging av egendefinerte providere er en gratis leksjon i Terraform som Infrastructure as Code på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Terraform som Infrastructure as Code, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.
Når eksisterende providere ikke strekker til
Registeret dekker de fleste plattformer, men virksomheter bruker ofte interne API-er uten en provider. En egendefinert provider lar Terraform administrere disse ressursene med den samme plan/apply-livssyklusen.
Slik fungerer providere
En provider er en separat plugin-binærfil som Terraform starter og kommuniserer med via gRPC. Pluginen oversetter CRUD-operasjonene i Terraform til API-kall mot målsystemet.
Plugin Framework
HashiCorps moderne Terraform Plugin Framework (Go) er den anbefalte måten å bygge providere på og erstatter den eldre SDKv2. Providere skrives i Go.
import (
"github.com/hashicorp/terraform-plugin-framework/provider"
)Definere provideren
Provider-typen deklarerer navnet sitt samt ressursene og datakildene den tilbyr.
type widgetProvider struct{}
func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
resp.TypeName = "widget"
}Ressursskjemaet
Hver ressurs deklarerer et skjema med attributter, typer og metadata. Dette er det brukerne angir i HCL-koden sin.
resp.Schema = schema.Schema{
Attributes: map[string]schema.Attribute{
"name": schema.StringAttribute{Required: true},
"id": schema.StringAttribute{Computed: true},
},
}Implementere CRUD
En ressurs implementerer Create, Read, Update og Delete. Hver metode kaller API-et Deres og skriver resultatet tilbake til Terraform-tilstanden.
func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// call API, then save state
}Read holder tilstanden korrekt
Metoden Read oppdaterer tilstanden fra det faktiske API-et. Hvis den eksterne ressursen er borte, fjerner De den fra tilstanden slik at Terraform planlegger å opprette den på nytt.
Akseptansetesting
Providere bruker akseptansetester som kjører ekte plan/apply-sykluser mot et testmiljø. De styres av en miljøvariabel slik at de ikke kjøres ved et uhell.
TF_ACC=1 go test ./... -vOverstyring for lokal utvikling
For å teste en provider før publisering bruker De en dev override i CLI-konfigurasjonen, slik at Terraform laster den lokale binærfilen Deres i stedet for å laste den ned fra et register.
provider_installation {
dev_overrides {
"acme/widget" = "/home/dev/go/bin"
}
direct {}
}Publisere provideren
Publiser til registeret ved å merke en release og signere binærfilene med en GPG-nøkkel. Forbrukere deklarerer den deretter i required_providers.
terraform {
required_providers {
widget = {
source = "acme/widget"
version = "~> 1.0"
}
}
}Vedlikeholdshensyn
En provider er en langsiktig forpliktelse: API-endringer, versjonskompatibilitet og dokumentasjon må vedlikeholdes. For engangsbehov kan datakilden external eller et skript være enklere enn en fullverdig provider.
Hurtigsjekk
Test kunnskapene Deres om egendefinerte providere.
Oppsummering: Utvide Terraform
De har lært å bygge egendefinerte providere:
- Providere er Go-pluginer som kommuniserer med kjernen via gRPC.
- Plugin Framework definerer skjemaer og CRUD-metoder.
- Dev overrides muliggjør lokal testing, mens akseptansetester verifiserer oppførselen.
- Publisering krever tagger og signerte binærfiler.
Lær deg Terraform som Infrastructure as Code med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Bygging av egendefinerte providere» gratis?
Ja – hele teksten i «Bygging av egendefinerte providere» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Terraform som Infrastructure as Code-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.
Hva lærer jeg i «Bygging av egendefinerte providere»?
Utvid Terraform utover eksisterende integrasjoner ved å forstå hvordan providere fungerer, og utvikle en egendefinert provider med Terraform Plugin Framework. Du øver på Terraform som Infrastructure as Code med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Terraform som Infrastructure as Code?
Ingen tidligere erfaring er nødvendig. Terraform som Infrastructure as Code på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Bygging av egendefinerte providere»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Terraform som Infrastructure as Code-leksjonen?
Ja. Alle Terraform som Infrastructure as Code-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Mønstre for multisky og hybrid sky
- Sentinel-policyer for styring
- Terraform Cloud og Enterprise
- Bygging av egendefinerte providere