Terraform Provider for AWS Redshift

This provider allows to manage with Terraform AWS Redshift objects like users, groups, schemas, etc..

It's published on the Terraform registry.

Requirements

  • Terraform >= 1.0
  • Go 1.17 (to build the provider plugin)

Building The Provider

$ git clone git@github.com:brainly/terraform-provider-redshift

Enter the provider directory and build the provider

$ cd terraform-provider-redshift
$ make build

Development

If you're new to provider development, a good place to start is the Extending Terraform docs.

Running Tests

Acceptance tests require a running real AWS Redshift cluster.

REDSHIFT_HOST=<cluster ip or DNS>
REDSHIFT_USER=root
REDSHIFT_DATABASE=redshift
REDSHIFT_PASSWORD=<password>
make testacc

If your cluster is only accessible from within the VPC, you can connect via a socks proxy:

ALL_PROXY=socks5[h]://[<socks-user>:<socks-password>@]<socks-host>[:<socks-port>]
NO_PROXY=127.0.0.1,192.168.0.0/24,*.example.com,localhost

Documentation

Documentation is generated with tfplugindocs. Generated files are in docs/ and should not be updated manually. They are derived from:

Use go generate to update generated docs.

Releasing

Builds and releases are automated with GitHub Actions and GoReleaser. The changelog is managed with github-changelog-generator.

Currently there are a few manual steps to this:

  1. Update the changelog:

    RELEASE_VERSION=v... \
    CHANGELOG_GITHUB_TOKEN=... \
    make changelog

    This will commit the changelog locally.

  2. Review generated changelog and push:

    View the committed changelog with git show. If all is well git push origin master.

  3. Kick off the release:

    RELEASE_VERSION=v... \
    make release

    Once the command exits, you can monitor the rest of the process on the Actions UI.

  4. 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 publish button.