GithubHelp home page GithubHelp logo

isabella232 / hashicorp-terraform-plugin-sdk Goto Github PK

View Code? Open in Web Editor NEW

This project forked from openshift/hashicorp-terraform-plugin-sdk

0.0 0.0 0.0 12.21 MB

Terraform Plugin SDK enables building plugins (providers) to manage any service providers or custom in-house solutions

Home Page: https://www.terraform.io/docs/extend/

License: Mozilla Public License 2.0

Go 99.55% Shell 0.35% Makefile 0.02% HCL 0.08%

hashicorp-terraform-plugin-sdk's Introduction

PkgGoDev

Terraform Plugin SDK

This SDK enables building Terraform plugin which allows Terraform's users to manage existing and popular service providers as well as custom in-house solutions.

Terraform itself is a tool for building, changing, and versioning infrastructure safely and efficiently. You can find more about Terraform on its website and its GitHub repository.

Terraform CLI Compatibility

Terraform 0.12.0 or later is needed for version 2.0.0 and later of the Plugin SDK.

When running provider tests, Terraform 0.12.26 or later is needed for version 2.0.0 and later of the Plugin SDK. Users can still use any version after 0.12.0.

Go Compatibility

The Terraform Plugin SDK is built in Go, and uses the support policy of Go as its support policy. The two latest major releases of Go are supported by the SDK.

Currently, that means Go 1.15 or later must be used when building a provider with the SDK.

Getting Started

See the Call APIs with Terraform Providers guide on learn.hashicorp.com for a guided tour of provider development.

Documentation

See Extending Terraform section on the website.

Scope (Providers VS Core)

Terraform Core

  • acts as gRPC client
  • interacts with the user
  • parses (HCL/JSON) configuration
  • manages state as whole, asks Provider(s) to mutate provider-specific parts of state
  • handles backends & provisioners
  • handles inputs, outputs, modules, and functions
  • discovers Provider(s) and their versions per configuration
  • manages Provider(s) lifecycle (i.e. spins up & tears down provider process)
  • passes relevant parts of parsed (valid JSON/HCL) and interpolated configuration to Provider(s)
  • decides ordering of (Create, Read, Update, Delete) operations on resources and data sources
  • ...

Terraform Provider (via this SDK)

  • acts as gRPC server
  • executes any domain-specific logic based on received parsed configuration
    • (Create, Read, Update, Delete, Import, Validate) a Resource
    • Read a Data Source
  • tests domain-specific logic via provided acceptance test framework
  • provides Core updated state of a resource or data source and/or appropriate feedback in the form of validation or other errors

Migrating to SDK v1 from built-in SDK

Migrating to the standalone SDK v1 is covered on the Plugin SDK section of the website.

Migrating to SDK v2 from SDK v1

Migrating to the v2 release of the SDK is covered in the v2 Upgrade Guide of the website.

Versioning

The Terraform Plugin SDK is a Go module versioned using semantic versioning.

Contributing

See .github/CONTRIBUTING.md

License

Mozilla Public License v2.0

hashicorp-terraform-plugin-sdk's People

Contributors

apparentlymart avatar appilon avatar armon avatar bflad avatar catsby avatar cgriggs01 avatar danawillow avatar ewbankkit avatar findkim avatar grubernaut avatar jbardin avatar jen20 avatar jtopjian avatar justincampbell avatar kmoe avatar lwander avatar mbfrahry avatar mildwonkey avatar mitchellh avatar paddycarver avatar paultyng avatar pearkes avatar phinze avatar pselle avatar radeksimko avatar sethvargo avatar sparkprime avatar stack72 avatar tombuildsstuff avatar vancluever avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.