Terraform Provider for Pact Broker and Pactflow.
Example:
variable "token" {
type = string
}
provider "pact" {
# For the OSS Broker
# host = "http://localhost"
# basic_auth_username = "pact_broker"
# basic_auth_password = "pact_broker"
# For a Pactflow Broker
host = "https://mybroker.pact.dius.com.au"
access_token = var.token
}
# Create a Pacticipant
resource "pact_pacticipant" "billy" {
name = "billy"
repository_url = "github.com/foo/billy"
}
# Create a Pacticipant
resource "pact_pacticipant" "sally" {
name = "sally"
repository_url = "github.com/foo/sally"
}
resource "pact_webhook" "billy_changed" {
description = "new description"
webhook_provider = {
name = "billy"
}
webhook_consumer = {
name = "sally"
}
request {
url = "https://foo.com/some/endpoint"
method = "POST"
username = "test"
password = "password"
headers = {
"X-Content-Type" = "application/json"
}
body = <<EOF
{
"pact": "$${pactbroker.pactUrl}"
}
EOF
}
events = ["contract_content_changed", "contract_published"]
depends_on = [pact_pacticipant.billy, pact_pacticipant.sally]
}
resource "pact_secret" "some_jenkins_token" {
name = "JenkinsPactSecret"
description = "Jenkins token for Pactflow"
value = "my super secret value"
}
Download the latest release and install into your Terraform plugin directory.
Run the following to have the provider installed for you automatically:
curl -fsSL https://raw.githubusercontent.com/pactflow/terraform/master/scripts/install.sh | bash
Dowload the plugin to %APPDATA%\terraform.d\plugins
.
To use a released provider in your Terraform environment, run terraform init
and Terraform will automatically install the provider. To specify a particular provider version when installing released providers, see the Terraform documentation on provider versioning.
To instead use a custom-built provider in your Terraform environment (e.g. the provider binary from the build instructions above), follow the instructions to install it as a plugin. After placing the custom-built provider into your plugins directory, run terraform init
to initialize it.
For either installation method, documentation about the provider specific configuration options can be found on the provider's website.
Plugin | Type | Platform Support | Description |
---|---|---|---|
Pact | Provider | Pact Broker + Pactflow | Configures a target Pact Broker (such as a pactflow.io account) |
Pacticipant | Resource | Pact Broker + Pactflow | Create applications (known as Pacticipants) |
Webhook | Resource | Pact Broker + Pactflow | Configures a webhook to trigger on certain platform events |
Secret | Resource | Pactflow | Create an encrypted secret for use in Webhooks |
API Token | Resource | Pactflow | Manage Pactflow API Tokens |
See our Docs folder for all plugins.
Note: This project uses Go Modules making it safe to work with it outside of your existing GOPATH. The instructions that follow assume a directory in your home directory outside of the standard GOPATH (e.g. $HOME/development/terraform-providers/
).
To compile the provider, run make build
. This will build the provider and put the provider binary in the ./bin
directory.
$ make build
...
$ $GOPATH/bin/terraform-provider-aws
...
Plan for the next few months:
- Pacticipants
- Webhooks
- Secrets (Pactflow only)
- API Tokens (Pactflow only)
- Better error messages for HTTP / runtime failures
- Proper acceptance tests
- Better code coverage
- Extract
Client
into separate SDK package - Publish 1.0.0
Want to see something else here? Have you say on our Pact Feature Request board.