Intensiv DevOps-uddannelse · Lektion

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.

Lektion 4 af 413 trin

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

Lokal 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.
Gratis at komme i gang

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

  1. Mønstre til multicloud og hybrid cloud
  2. Sentinel-politikker til governance
  3. Terraform Cloud og Enterprise
  4. Udvikling af brugerdefinerede providers
← Tilbage til Intensiv DevOps-uddannelse