Terraform som Infrastructure as Code · leksjon

Bygging av egendefinerte providere

Utvid Terraform utover eksisterende integrasjoner ved å forstå hvordan providere fungerer, og utvikle en egendefinert provider med Terraform Plugin Framework.

Leksjon 4 av 413 trinn

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 ./... -v

Overstyring 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.
Gratis å komme i gang

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

  1. Mønstre for multisky og hybrid sky
  2. Sentinel-policyer for styring
  3. Terraform Cloud og Enterprise
  4. Bygging av egendefinerte providere
← Tilbake til Terraform som Infrastructure as Code