Kaip sukurti savo tiekėją Terraform?
sobes.tech AI
Atsakymas iš AI
Savo Terraform teikėjo kūrimas reikalauja:
-
Pasirinkti kalbą: Go - pagrindinė kalba Terraform teikėjams.
-
Įdiegti SDK: Go ir Terraform Plugin SDK.
-
Sukurkite projekto struktūrą:
# Pagrindinių failų kūrimas 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 -
Įgyvendinti teikėją: sukurkite
provider.gofailą ir apibrėžkite Provider struktūrą, įskaitant:Schema: teikėjo konfigūracijos parametrų apibrėžimas.ResourcesMap: išteklių pavadinimų ir jų įgyvendinimo žemėlapis.DataSourcesMap: duomenų šaltinių pavadinimų ir jų įgyvendinimo žemėlapis.
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": { // Konfigūracijos parametro pavyzdys Type: schema.TypeString, Optional: true, DefaultFunc: schema.EnvDefaultFunc("MYPROVIDER_ENDPOINT", nil), }, }, ResourcesMap: map[string]*schema.Resource{ "myprovider_resource": resourceMyProviderResource(), // Išteklių įgyvendinimas }, DataSourcesMap: map[string]*schema.Resource{ // Duomenų šaltinių įgyvendinimas }, ConfigureContextFunc: providerConfigure, // Konfigūracijos funkcija } } func providerConfigure(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) { // Teikėjo kliento konfigūracijos logika return nil, nil } func main() { // Įėjimo taškas } -
Įgyvendinti išteklius ir duomenų šaltinius: sukurkite atskirus failus kiekvienam ištekliui ir šaltiniui (pvz.,
resource_myprovider_resource.go). Kiekvienas išteklius turi įgyvendinti šias funkcijas:Schema: išteklių parametrų apibrėžimas.Create: išteklių kūrimas.Read: išteklių būsenos skaitymas.Update: išteklių atnaujinimas.Delete: išteklių ištrynimas.Exists: išteklių egzistavimo patikrinimas (pasirinktinai).
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": { // Pavyzdžio parametras Type: schema.TypeString, Required: true, }, }, } } func resourceMyProviderResourceCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { // Išteklių kūrimo logika return nil } // ... Skaitymo, atnaujinimo, trinimo įgyvendinimai -
Kompiliuoti: surinkite teikėjo vykdomąjį failą.
-
Įdiegti: įdėkite sukompiliuotą binarinį failą į Terraform plaginų katalogą (
~/.terraform.d/plugins/arba kitur, nurodytame Terraform konfigūracijoje). -
Testuoti: parašykite Acceptance Tests, kad patikrintumėte teikėjo teisingą veikimą.
Papildomi žingsniai gali apimti:
- teikėjo dokumentacijos parengimą.
- teikėjo publikavimą Terraform Registry.
- naudoti Framework vietoje SDK, siekiant modernesnio vystymo.