pan-net / terraform-provider-powerdns

Terraform PowerDNS provider
https://www.terraform.io/docs/providers/powerdns/
Mozilla Public License 2.0
44 stars 48 forks source link
powerdns terraform terraform-provider

Terraform Provider

Requirements

The Go ang Goreleaser minimum versions were set to be able to build plugin for Darwin/ARM64 architecture see goreleaser notes.

Using the Provider (TF 0.13+)

terraform {
  required_providers {
    powerdns = {
      source = "pan-net/powerdns"
    }
  }
}

provider "powerdns" {
  server_url = "https://host:port/"  # or use PDNS_SERVER_URL variable
  api_key    = "secret"              # or use PDNS_API_KEY variable
}

For detailed usage see provider's documentation page

Building The Provider

Clone the provider repository:

$ git clone git@github.com:terraform-providers/terraform-provider-powerdns

Navigate to repository directory:

$ cd terraform-provider-powerdns

Build repository:

$ go build

This will compile and place the provider binary, terraform-provider-powerdns, in the current directory.

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.11+ is recommended). You'll also need to have $GOPATH/bin in your $PATH.

Make sure the changes you performed pass linting:

$ make lint

To install the provider, run make build. This will build the provider and put the provider binary in the current working directory.

$ make build

In order to run local provider tests, you can simply run make test.

$ make test

For running acceptance tests locally, you'll need to use docker-compose to prepare the test environment:

docker-compose run --rm setup

After setup is done, run the acceptance tests with make testacc (note the env variables needed to interact with the PowerDNS container)

~$  PDNS_SERVER_URL=http://localhost:8081 \
    PDNS_API_KEY=secret \
    make testacc
~$  PDNS_SERVER_URL=localhost:4443 \
    PDNS_API_KEY=secret \
    PDNS_CACERT=$(cat ./tests/files/ssl/rootCA/rootCA.crt) \
    make testacc

And finally cleanup containers spun up by docker-compose:

~$ docker-compose down