This repository has been archived on 2026-08-17. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
terraform-provider-dynu/README.md
T

2.6 KiB

terraform-provider-dynu

A standalone Terraform provider for Dynu DNS.

Status: read-only milestone. This provider currently implements provider configuration and data sources only.

Feature scope

Implemented:

  • Provider authentication using api_key or DYNU_API_KEY
  • Data sources:
    • dynu_domains
    • dynu_domain
    • dynu_dns_records

Not implemented yet:

  • Terraform resources (no create/update/delete)
  • Any write API operations

Provider source and module path

  • Terraform provider source address: dynu/dynu
  • Go module path: github.com/dynu/terraform-provider-dynu

The repository can be hosted elsewhere during development, but module and provider source naming are kept aligned with planned public registry publishing.

Requirements

  • Terraform >= 1.5
  • Go >= 1.23
  • Dynu API key

Authentication

Option 1: Terraform configuration.

provider "dynu" {
  api_key = var.dynu_api_key
}

variable "dynu_api_key" {
  type      = string
  sensitive = true
}

Option 2: Environment variable.

export DYNU_API_KEY="your-dynu-api-key"

Data source examples

See the examples/ directory:

  • examples/provider/provider.tf
  • examples/data-sources/dynu_domains/data-source.tf
  • examples/data-sources/dynu_domain/data-source.tf
  • examples/data-sources/dynu_dns_records/data-source.tf

Developer workflow

  • ./scripts/setup-dev.sh - verify required local tools
  • ./scripts/check.sh - formatting, vet, and unit tests
  • ./scripts/testacc.sh - acceptance tests only

Build

go build ./...

Unit tests

go test ./...

Acceptance tests

Acceptance tests are read-only and opt-in.

Required environment variables:

  • TF_ACC=1
  • DYNU_API_KEY

Optional:

  • DYNU_DOMAIN (required for domain-specific acceptance tests such as dynu_domain and dynu_dns_records)

Run:

TF_ACC=1 DYNU_API_KEY="your-dynu-api-key" DYNU_DOMAIN="www.example.com" ./scripts/testacc.sh

If DYNU_DOMAIN is omitted, domain-specific tests skip cleanly.

CI

GitHub Actions CI runs on push and pull requests and executes:

  • gofmt verification
  • go vet ./...
  • go test ./...

Acceptance tests are intentionally excluded from default CI.

Documentation

Registry-style markdown docs are stored in docs/.

Limitations

  • Dynu timestamps are currently exposed as strings exactly as returned by Dynu API.
  • Data returned from Dynu is sorted in provider state for Terraform stability.
  • Read-only operations only.

Roadmap

Next planned milestone after this quality-hardening release:

  • first writable resource (dynu_dns_record) with careful CRUD behavior and acceptance coverage.