Kuidas arendada oma teenusepakkujat Terraformis?
sobes.tech AI
Vastus AI-lt
Sinu Terraformi pakkuja arendamiseks on vaja:
-
Vali keel: Go - peamine keel Terraformi pakkujate jaoks.
-
Paigalda SDK: Go ja Terraform Plugin SDK.
-
Loo projekti struktuur:
# Põhifailide loomine mkdir terraform-provider-myprovider cd terraform-provider-myprovider go mod init github.com/myorg/terraform-provider-myprovider go get github.com/hashicorp/terraform-plugin-sdk/v2 -
Teosta pakkuja: loo
provider.gofail ja määra Provider struktuur, sealhulgas:Schema: pakkuja konfiguratsiooniparameetrite määratlus.ResourcesMap: ressursside nimede ja nende realiseerimise kaart.DataSourcesMap: andmeallikate nimede ja nende realiseerimise kaart.
package main import ( "context" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func Provider() *schema.Provider { return &schema.Provider{ Schema: map[string]*schema.Schema{ "endpoint": { // Konfiguratsiooniparameetri näide Type: schema.TypeString, Optional: true, DefaultFunc: schema.EnvDefaultFunc("MYPROVIDER_ENDPOINT", nil), }, }, ResourcesMap: map[string]*schema.Resource{ "myprovider_resource": resourceMyProviderResource(), // Ressursi realiseerimine }, DataSourcesMap: map[string]*schema.Resource{ // Andmeallikate realiseerimine }, ConfigureContextFunc: providerConfigure, // Konfiguratsiooni funktsioon } } func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) { // Pakkuja kliendi seadistamise loogika return nil, nil } func main() { // Sisenemispunkt } -
Realiseeri ressursid ja andmeallikad: loo iga ressursi ja allika jaoks eraldi failid (näiteks
resource_myprovider_resource.go). Iga ressursi peab realiseerima järgmised funktsioonid:Schema: ressursi parameetrite määratlus.Create: ressursi loomine.Read: ressursi oleku lugemine.Update: ressursi uuendamine.Delete: ressursi kustutamine.Exists: ressursi olemasolu kontroll (valikuline).
package main import ( "context" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceMyProviderResource() *schema.Resource { return &schema.Resource{ CreateContext: resourceMyProviderResourceCreate, ReadContext: resourceMyProviderResourceRead, UpdateContext: resourceMyProviderResourceUpdate, DeleteContext: resourceMyProviderResourceDelete, Schema: map[string]*schema.Schema{ "name": { // Näidispaar Type: schema.TypeString, Required: true, }, }, } } func resourceMyProviderResourceCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { // Ressursi loomise loogika return nil } // ... Loe, uuenda, kustuta realiseeringud -
Kompileeri: koostage pakkuja täidetav fail.
-
Paigalda: paigaldage kompileeritud binaarfail Terraformi pluginade kataloogi (
~/.terraform.d/plugins/või muusse asukohta, mis on määratud Terraformi konfiguratsioonis). -
Testi: kirjutage Acceptance Tests, et kontrollida pakkuja korrektset tööd.
Täiendavad sammud võivad hõlmata:
- pakkuja dokumentatsiooni koostamist.
- pakkuja avaldamist Terraform Registry-s.
- kasutades Frameworki SDK asemel, kaasaegsema arenduse jaoks.