Mukautettujen providereiden rakentaminen
Laajentakaa Terraformia olemassa olevia integraatioita pidemmälle ymmärtämällä providereiden toiminta ja toteuttamalla mukautettu provider Terraform Plugin Frameworkilla.
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 ./... -vPaikallisen 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ä.
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
- Monipilvi- ja hybridipilvimallit
- Sentinel-käytännöt hallintaa varten
- Terraform Cloud ja Enterprise
- Mukautettujen providereiden rakentaminen