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 DevOps-bootcamp på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i DevOps-bootcamp, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i DevOps-bootcamp 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 DevOps-bootcamp 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
- 142
- Leksjoner
- 568
Ofte stilte spørsmål
Er leksjonen «Bygging av egendefinerte providere» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien DevOps-bootcamp, inkludert «Bygging av egendefinerte providere», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i DevOps-bootcamp 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å DevOps-bootcamp 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 DevOps-bootcamp?
Ingen tidligere erfaring er nødvendig. DevOps-bootcamp 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 DevOps-bootcamp-leksjonen?
Ja. Alle DevOps-bootcamp-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