The Hookdeck Event Gateway enables engineering teams to build, deploy, observe, and scale event-driven applications. For more information, see the Hookdeck documentation.
The Hookdeck Terraform provider enables you to manage your Hookdeck workspaces using IaC (Infrastructure-as-Code), including managing your sources, destinations, connections, transformations, and more. It also supports webhook registration workflow that allows you to configure webhooks as part of your CI/CD processes.
To install Hookdeck Terraform provider:
- Obtain your Hookdeck API key from the dashboard
- Add the following to your Terraform configuration file:
terraform {
required_providers {
hookdeck = {
source = "hookdeck/hookdeck"
}
}
}
provider "hookdeck" {
# set HOOKDECK_API_KEY env var or optionally specify the key in the provider configuration
api_key = var.hookdeck_api_key
}
This README gives a basic example; for more examples, see the examples/ folder, the rendered documentation on the Terraform Registry, or docs folder in this repository.
# Configure a source
resource "hookdeck_source" "my_source" {
name = "my_source"
}
# Configure a destination
resource "hookdeck_destination" "my_destination" {
name = "my_destination"
type = "HTTP"
config = jsonencode({
url = "https://myapp.example.com/api"
})
}
# Configure a connection
resource "hookdeck_connection" "my_connection" {
source_id = hookdeck_source.my_source.id
destination_id = hookdeck_destination.my_destination.id
}
For Source config
and Destination config
you must provide a JSON object. This means you do not get validation on the config
property within your IDE or when running terraform plan
. However, when running terraform apply
the Hookdeck API will provide error responses if invalid configuration is received.
This provider is built on top of the Hookdeck API.
Build and install:
go build
go install
Override the provider in a ~/.terraformrc
:
provider_installation {
dev_overrides {
"hookdeck/hookdeck" = "/Users/leggetter/go/bin"
}
# 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 {}
}
Released are managed via GitHub Releases.
To release, create a new release with a name representing the SemVer version. Also, create a tag with the same version. A GitHub action is triggered via the new Tag creation and uses GoReleaser to create a new set of release assets for the Hookdeck Terraform Provider.
Enable pre-commit Git hooks to ensure any code changes are reflected in the documentation:
make enable-git-hooks