DevOps-bootcamp · Oppitunti

Mukautettujen providereiden rakentaminen

Laajentakaa Terraformia olemassa olevia integraatioita pidemmälle ymmärtämällä providereiden toiminta ja toteuttamalla mukautettu provider Terraform Plugin Frameworkilla.

Oppitunti 4/413 vaihetta

Mukautettujen providereiden rakentaminen on ilmainen DevOps-bootcamp-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu DevOps-bootcamp-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Kun nykyiset providerit eivät riitä

Registry kattaa useimmat alustat, mutta yrityksillä on usein sisäisiä API-rajapintoja, joille ei ole provideria. Mukautetun providerin avulla Terraform voi hallita näitä resursseja samalla plan/apply-elinkaarimallilla.

Miten providerit toimivat

Provider on erillinen plugin-binääri, jonka Terraform käynnistää ja johon se muodostaa yhteyden gRPC:n kautta. Plugin muuntaa Terraformin CRUD-operaatiot kohdejärjestelmään kohdistuviksi API-kutsuiksi.

Plugin Framework

HashiCorpin moderni Terraform Plugin Framework (Go) on suositeltu tapa rakentaa providereita, ja se korvaa vanhemman SDKv2:n. Providerit kirjoitetaan Golla.

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

Providerin määrittäminen

Provider-tyyppi ilmoittaa nimensä sekä tarjoamansa resurssit ja tietolähteet.

type widgetProvider struct{}

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

Resurssin skeema

Jokainen resurssi ilmoittaa skeeman, joka koostuu tyypeillä ja metatiedoilla varustetuista attribuuteista. Näitä käyttäjät määrittävät HCL:ssä.

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

CRUD-operaatioiden toteuttaminen

Resurssi toteuttaa operaatiot Create, Read, Update ja Delete. Jokainen metodi kutsuu APIasi ja kirjoittaa tuloksen takaisin Terraformin tilaan.

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

Read pitää tilan totuudenmukaisena

Read-metodi päivittää tilan oikeasta APIsta. Jos etäresurssi on poistunut, poista se tilasta, jotta Terraform suunnittelee sen luomisen uudelleen.

Hyväksymistestaus

Providerit käyttävät hyväksymistestejä, jotka suorittavat todellisia plan/apply-kierroksia testiympäristöä vasten. Ympäristömuuttuja ohjaa testien suorittamista, jotta ne eivät käynnisty vahingossa.

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

Paikallisen kehityksen ohitus

Testataksesi provideria ennen julkaisemista käytä CLI-konfiguraatiossa dev override -asetusta, jotta Terraform lataa paikallisen binäärisi sen sijaan, että se lataisi providerin registrystä.

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

Providerin julkaiseminen

Julkaise provider registryssä merkitsemällä julkaisu tagilla ja allekirjoittamalla binäärit GPG-avaimella. Käyttäjät ilmoittavat sen jälkeen providerin kohdassa required_providers.

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

Ylläpidossa huomioitavaa

Provider on pitkäaikainen sitoumus: API-muutokset, versioiden yhteensopivuus ja dokumentaatio vaativat kaikki ylläpitoa. Kertaluonteisiin tarpeisiin external-tietolähde tai skripti voi olla yksinkertaisempi ratkaisu kuin täysimittainen provider.

Pikatarkistus

Testaa mukautettujen providerien tuntemuksesi.

Kertaus: Terraformin laajentaminen

Opit rakentamaan mukautettuja providereita:

  • Providerit ovat Go-plugineja, jotka keskustelevat ytimen kanssa gRPC:n välityksellä.
  • Plugin Framework määrittää skeemat ja CRUD-metodit.
  • Dev override -asetukset mahdollistavat paikallisen testauksen, ja hyväksymistestit varmistavat toiminnan.
  • Julkaiseminen edellyttää tageja ja allekirjoitettuja binäärejä.
Aloita maksutta

Opi DevOps-bootcamp tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
142
Oppitunnit
568

Usein kysytyt kysymykset

Onko oppitunti ”Mukautettujen providereiden rakentaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa DevOps-bootcamp-oppimispolun 3 oppituntia, myös oppitunnin “Mukautettujen providereiden rakentaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. DevOps-bootcamp-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Mukautettujen providereiden rakentaminen”?

Laajentakaa Terraformia olemassa olevia integraatioita pidemmälle ymmärtämällä providereiden toiminta ja toteuttamalla mukautettu provider Terraform Plugin Frameworkilla. Harjoittelet DevOps-bootcamp-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni DevOps-bootcamp-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin DevOps-bootcamp-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Mukautettujen providereiden rakentaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä DevOps-bootcamp-oppitunnilla?

Kyllä. Jokainen DevOps-bootcamp-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Monipilvi- ja hybridipilvimallit
  2. Sentinel-käytännöt hallintaa varten
  3. Terraform Cloud ja Enterprise
  4. Mukautettujen providereiden rakentaminen
← Takaisin: DevOps-bootcamp