0Pricing
DevOps Bootcamp · Lekcja

Tworzenie własnych providerów

Rozszerz Terraform poza istniejące integracje, poznając działanie providerów i tworząc własny provider za pomocą Terraform Plugin Framework.

Tworzenie własnych providerów to bezpłatna lekcja DevOps Bootcamp na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej DevOps Bootcamp, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Gdy istniejący provider nie wystarcza

Registry obejmuje większość platform, ale przedsiębiorstwa często korzystają z wewnętrznych interfejsów API, dla których nie ma providera. Custom provider pozwala zarządzać tymi zasobami za pomocą Terraform, z zachowaniem tego samego cyklu plan/apply.

Jak działają providery

Provider jest osobnym binarnym pluginem, który Terraform uruchamia i z którym komunikuje się przez gRPC. Plugin tłumaczy operacje CRUD Terraform na wywołania API docelowego systemu.

Plugin Framework

Nowoczesny Terraform Plugin Framework firmy HashiCorp (Go) to zalecany sposób tworzenia providerów, zastępujący starszy SDKv2. Providery są pisane w Go.

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

Definiowanie providera

Typ providera deklaruje jego nazwę oraz oferowane zasoby i źródła danych.

type widgetProvider struct{}

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

Schemat zasobu

Każdy zasób deklaruje schemat atrybutów wraz z ich typami i metadanymi. To właśnie te wartości użytkownicy ustawiają w swoim HCL.

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

Implementowanie CRUD

Zasób implementuje operacje Create, Read, Update i Delete. Każda metoda wywołuje API i zapisuje wynik z powrotem w stanie Terraform.

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

Read utrzymuje zgodność stanu z rzeczywistością

Metoda Read odświeża stan na podstawie rzeczywistego API. Jeśli zdalny zasób nie istnieje, usuń go ze stanu, aby Terraform zaplanował jego ponowne utworzenie.

Testy akceptacyjne

Providery korzystają z testów akceptacyjnych, które wykonują rzeczywiste cykle plan/apply w środowisku testowym. Są one chronione zmienną środowiskową, aby nie uruchomiły się przypadkowo.

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

Lokalne zastępowanie podczas tworzenia

Aby przetestować providera przed opublikowaniem, użyj dev override w konfiguracji CLI, dzięki czemu Terraform załaduje lokalny plik binarny zamiast pobierać go z registry.

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

Publikowanie providera

Opublikuj providera w registry, oznaczając wydanie tagiem i podpisując pliki binarne kluczem GPG. Użytkownicy deklarują go następnie w required_providers.

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

Kwestie związane z utrzymaniem

Provider jest zobowiązaniem długoterminowym: zmianami API, zgodnością wersji i dokumentacją trzeba stale zarządzać. W przypadku jednorazowych potrzeb prostsze od pełnego providera może być źródło danych external lub skrypt.

Szybki test

Sprawdź swoją wiedzę na temat custom providerów.

Podsumowanie: rozszerzanie Terraform

Nauczył się Pan/Nauczyła się Pani tworzyć custom providery:

  • Providery to pluginy Go komunikujące się z rdzeniem przez gRPC.
  • Plugin Framework definiuje schematy i metody CRUD.
  • Dev overrides umożliwiają testowanie lokalne, a testy akceptacyjne weryfikują działanie.
  • Publikowanie wymaga tagów i podpisanych plików binarnych.

Często zadawane pytania

Czy lekcja „Tworzenie własnych providerów” jest bezpłatna?

Tak — pełny tekst „Tworzenie własnych providerów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu DevOps Bootcamp, przejdź na CoddyKit PRO. Kurs DevOps Bootcamp zawiera 4 lekcji w sumie.

Co nauczysz się w „Tworzenie własnych providerów”?

Rozszerz Terraform poza istniejące integracje, poznając działanie providerów i tworząc własny provider za pomocą Terraform Plugin Framework. Ćwiczysz DevOps Bootcamp z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć DevOps Bootcamp?

Nie wymagamy żadnego doświadczenia. DevOps Bootcamp w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Tworzenie własnych providerów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji DevOps Bootcamp?

Tak. Każda lekcja DevOps Bootcamp zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wzorce środowisk wielochmurowych i hybrydowych
  2. Zasady Sentinel na potrzeby zarządzania
  3. Terraform Cloud i Enterprise
  4. Tworzenie własnych providerów
← Powrót do DevOps Bootcamp