Terraform som Infrastructure as Code · Lektion

Bygga anpassade providers

Utöka Terraform bortom befintliga integrationer genom att förstå hur providers fungerar och utveckla en anpassad provider med Terraform Plugin Framework.

Lektion 4 av 413 steg

Bygga anpassade providers är en gratis lektion i Terraform som Infrastructure as Code på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Terraform som Infrastructure as Code, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Terraform som Infrastructure as Code innehåller totalt 4 lektioner.

När befintliga providers inte räcker till

Registret täcker de flesta plattformar, men företag kör ofta interna API:er utan någon provider. Med en anpassad provider kan Terraform hantera dessa resurser med samma plan/apply-livscykel.

Så fungerar providers

En provider är en separat plugin-binär som Terraform startar och kommunicerar med via gRPC. Plugin-programmet översätter Terraforms CRUD-operationer till API-anrop mot målsystemet.

Plugin Framework

HashiCorps moderna Terraform Plugin Framework (Go) är det rekommenderade sättet att bygga providers och ersätter det äldre SDKv2. Providers skrivs i Go.

import (
  "github.com/hashicorp/terraform-plugin-framework/provider"
)

Definiera providern

Providertypen deklarerar dess namn samt de resurser och datakällor som den erbjuder.

type widgetProvider struct{}

func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
  resp.TypeName = "widget"
}

Resursschemat

Varje resurs deklarerar ett schema med attribut, typer och metadata. Det är detta som användare anger i sin HCL.

resp.Schema = schema.Schema{
  Attributes: map[string]schema.Attribute{
    "name": schema.StringAttribute{Required: true},
    "id":   schema.StringAttribute{Computed: true},
  },
}

Implementera CRUD

En resurs implementerar Create, Read, Update och Delete. Varje metod anropar ert API och skriver tillbaka resultatet till Terraform state.

func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
  // call API, then save state
}

Read håller state korrekt

Metoden Read uppdaterar state från det verkliga API:t. Om fjärresursen har försvunnit tar ni bort den från state så att Terraform planerar att återskapa den.

Acceptanstestning

Providers använder acceptanstester som kör verkliga plan/apply-cykler mot en testmiljö. De styrs av en miljövariabel så att de inte körs av misstag.

TF_ACC=1 go test ./... -v

Lokal utvecklingsöverskrivning

För att testa en provider innan publicering använder ni en dev override i CLI-konfigurationen, så att Terraform läser in er lokala binär i stället för att hämta en från ett register.

provider_installation {
  dev_overrides {
    "acme/widget" = "/home/dev/go/bin"
  }
  direct {}
}

Publicera providern

Publicera till registret genom att tagga en release och signera binärfilerna med en GPG-nyckel. Konsumenter deklarerar den sedan i required_providers.

terraform {
  required_providers {
    widget = {
      source  = "acme/widget"
      version = "~> 1.0"
    }
  }
}

Underhållsaspekter

En provider är ett långsiktigt åtagande: API-ändringar, versionskompatibilitet och dokumentation behöver alla underhållas. För engångsbehov kan datakällan external eller ett skript vara enklare än en fullständig provider.

Snabbtest

Testa era kunskaper om anpassade providers.

Sammanfattning: Utöka Terraform

Ni har lärt er att bygga anpassade providers:

  • Providers är Go-plugin-program som kommunicerar med kärnan via gRPC.
  • Plugin Framework definierar scheman och CRUD-metoder.
  • Dev overrides möjliggör lokal testning; acceptanstester verifierar beteendet.
  • Publicering kräver taggar och signerade binärfiler.
Gratis att börja

Lär dig Terraform som Infrastructure as Code med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
12
Lektioner
48

Vanliga frågor

Är lektionen ”Bygga anpassade providers” gratis?

Ja – hela texten till ”Bygga anpassade providers” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Terraform som Infrastructure as Code, kan Ni uppgradera till CoddyKit PRO. Kursen i Terraform som Infrastructure as Code innehåller totalt 4 lektioner.

Vad lär jag mig i ”Bygga anpassade providers”?

Utöka Terraform bortom befintliga integrationer genom att förstå hur providers fungerar och utveckla en anpassad provider med Terraform Plugin Framework. Ni övar på Terraform som Infrastructure as Code med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Terraform som Infrastructure as Code?

Du behöver inga förkunskaper. Utbildningen i Terraform som Infrastructure as Code på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Bygga anpassade providers”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Terraform som Infrastructure as Code-lektionen?

Ja. Varje Terraform som Infrastructure as Code-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Mönster för flera moln och hybridmoln
  2. Sentinel-policyer för styrning
  3. Terraform Cloud och Enterprise
  4. Bygga anpassade providers
← Tillbaka till Terraform som Infrastructure as Code