This repository is a template for a Terraform provider. It is intended as a starting point for creating Terraform providers, containing:
- A resource, and a data source (
scaffolding/
), - Documentation (
website/
), - Recommended build system (
GNUMakefile
,.travis.yml
,scripts/
), - Miscellanious meta files.
These files contain boilerplate code that you will need to edit to create your own Terraform provider. A full guide to creating Terraform providers can be found at Writing Custom Providers.
Please see the GitHub template repository documentation for how to create a new repository from this template on GitHub.
Clone repository to: $GOPATH/src/github.com/terraform-providers/terraform-provider-scaffolding
$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
$ git clone git@github.com:terraform-providers/terraform-provider-scaffolding
Enter the provider directory and build the provider
$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-scaffolding
$ make build
This provider is a Go module. Please see the Go documentation for the most up to date information about using Go modules.
We recommend that Terraform providers use vendoring for their Go dependencies.
To add a new dependency github.com/author/dependency
to your Terraform provider:
go get github.com/author/dependency
go mod tidy
go mod vendor
Then commit the changes to go.mod
and vendor/
.
If you wish to work on the provider, you'll first need Go installed on your machine (version 1.8+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin
to your $PATH
.
To compile the provider, run make build
. This will build the provider and put the provider binary in the $GOPATH/bin
directory.
$ make bin
...
$ $GOPATH/bin/terraform-provider-scaffolding
...
In order to test the provider, you can simply run make test
.
$ make test
In order to run the full suite of Acceptance tests, run make testacc
.
Note: Acceptance tests create real resources, and often cost money to run.
$ make testacc