/terraform-provider-civo

Terraform Civo provider

Primary LanguageGoMozilla Public License 2.0MPL-2.0

Terraform Provider

Requirements

  • Terraform 0.13.x
  • Go 1.14.x or later (to build the provider plugin)

Building The Provider

Clone repository to: $GOPATH/src/github.com/civo/terraform-provider-civo

$ mkdir -p $GOPATH/src/github.com/terraform-providers; cd $GOPATH/src/github.com/terraform-providers
$ git clone https://github.com/civo/terraform-provider-civo.git

Enter the provider directory and build the provider

$ cd $GOPATH/src/github.com/terraform-providers/terraform-provider-civo
$ make build

Local Development: Using a local version of the Provider

If you're developing the provider locally, you can test your changes through:

$ make localdev

You'll be asked to provide the folder containing the declaration of the resources to be installed in civo and the civo region in which deploy those resources. No provider declaration is necessary because automatically produced by the script.

Documentation

  • For new Terraform users, we have guides written for you on Civo website
  • For experienced Terraform users, the documentation is available at Terraform Registry

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.14.x (or later) 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 build
...
$ $GOPATH/bin/terraform-provider-civo
...

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

In order to run a specific acceptance test, use the TESTARGS environment variable. For example, the following command will run TestAccCivoDomain_Basic acceptance test only:

$ make testacc TESTARGS='-run=TestAccCivoDomain_Basic'

For information about writing acceptance tests, see the main Terraform contributing guide.

Documenting the Provider

As of 10th September 2021, we decided to use tfplugindocs to auto-generate docs from the provider code and examples.

For reference, you can see an example of the templates and output in paultyng/terraform-provider-unifi and browse the generated docs in the Terraform Registry.

Another example would be https://github.com/fastly/terraform-provider-fastly - which rendered in the Terraform Registry.

Caveat

While the tfplugindocs is still in active development by the Hashicorp and works fine for most cases, except when it comes to generating attribute descriptions located in nested schemas. We think this isn't too critical since the attribute keys are self explanatory. However, we will still watch the issue and update the docs once it's fixed.