- Grafana website: https://grafana.com
- Grafana Cloud website: https://grafana.com/products/cloud/
- Provider Documentation: https://registry.terraform.io/providers/grafana/grafana/latest/docs
- Grafana Chat: Grafana #terraform Slack channel
- Terraform 0.12+
If you're new to provider development, a good place to start is the Extending Terraform docs.
Set up your local environment by installing Go. Also Docker can be used for running tests.
If you develop the provider and want to test locally with your grafana provider
- create a
.terraformrc
and paste the following
provider_installation {
dev_overrides {
"grafana/grafana" = "/path/to/your/grafana/terraform-provider" # this path is the diretory where the binary is built
}
# For all other providers, install them directly from their origin provider
# registries as normal. If you omit this, Terraform will _only_ use
# the dev_overrides block, and so no other providers will be available.
direct {}
}
- Run
go build
in this directory to get the binary, Terraform will use the binary you just built (it should print out a warning)
As for testing the client, make a branch and open the provider PR with a TODO:
to remove the replace operator, because the best way to test the changes you just made in the client is to integrate everything in the provider
- create a branch
api-client-branchname
with your changes - modify the provider
go.mod
:
- replace github.com/grafana/grafana-api-golang-client => github.com/grafana/grafana-api-golang-client
- run
go mod tidy
in this directory - pushing allows you to run the provider tests in CI
Acceptance tests require a running instance of Grafana. You can either handle
running an instance of Grafana yourself or use docker-compose
.
If you choose docker-compose
, run make testacc-docker
. This is the simplest
option, but often not the quickest.
Alternatively you can use the testacc
target which will use your local go
installation:
# Assuming Grafana was run with:
# docker run --rm -p 3000:3000 grafana/grafana
GRAFANA_URL=http://localhost:3000 \
GRAFANA_AUTH=admin:admin \
make testacc
To run tests for resources which are available only for Grafana Enterprise, running instance of Grafana Enterprise is required. It is only possible to run tests for Grafana Enterprise using local environment.
# Assuming Grafana was run with:
# docker run --rm -p 3000:3000 grafana/grafana
GRAFANA_URL=http://localhost:3000 \
GRAFANA_AUTH=admin:admin \
make testacc-enterprise
Documentation is generated with
tfplugindocs. Generated
files are in docs/
and should not be updated manually. They are derived from:
- Schema
Description
fields in the provider Go code. - examples/
- templates/
Use go generate
to update generated docs.
Builds and releases are automated with GitHub Actions and GoReleaser.
Currently there are a few manual steps to this:
-
Kick off the release:
RELEASE_VERSION=v... \ make release
-
Publish release:
The Action creates the release, but leaves it in "draft" state. Open it up in a browser and if all looks well, click the
Auto-generate release notes
button and mash the publish button.