An open API service indexing awesome lists of open source software.

https://github.com/skyzyx/terraform-registry-protocol

Experimental
https://github.com/skyzyx/terraform-registry-protocol

Last synced: 3 months ago
JSON representation

Experimental

Awesome Lists containing this project

README

          

# Provider Registry Protocol

Acts as an "overlay" between GitHub Enterprise and Terraform by implementing a Lambda function which sits in front of GitHub Enterprise, queries its API, and responds to requests for private provider installation.

Completely event-driven. No infrastructure to run.

## How it works

In the world of GitHub and Go packages, there are some fairly common patterns in the world.

1. Tags are semantically-versioned.
1. Proper releases are prepared.
1. Binaries for supported platforms are compiled and attached as assets to the release.

These patterns are expected by this software. A LOT of people are using GoReleaser to streamline this process.

Additionally, because they are light-touch, we can derive certain metadata about a provider by leveraging specially-formatted repository topics.

## Provider Configuration

* `terraform-provider` is required.
* `provider-type-{NAME}` is required, where `{NAME}` is a lowercase (e.g., `aws`, `google`, `azurerm`, `scout`).
* `provider-ns-{NAME}` is optional, where `{NAME}` is a lowercase namespace. If omitted, the default value will be defined in the `DEFAULT_PROVIDER_NS` environment variable of the Lambda environment.

To avoid confusion, only ONE of each of these topics/tags is permitted. (Any behavior stemming from multiple copies of a tag being set is _undefined behavior_ and therefore has no service contract.)

## Lambda Configuration

| Environment | Description |
|-----------------------|-------------|
| `DEFAULT_PROVIDER_NS` | |
| `GHE_TOKEN` | |
| `GHE_BASE_URL` | |

## Learn more…

* https://www.terraform.io/docs/cli/config/config-file.html
* https://www.terraform.io/docs/cloud/api/modules.html
* https://www.terraform.io/docs/internals/credentials-helpers.html
* https://www.terraform.io/docs/internals/login-protocol.html
* https://www.terraform.io/docs/internals/module-registry-protocol.html
* https://www.terraform.io/docs/internals/provider-network-mirror-protocol.html
* https://www.terraform.io/docs/internals/provider-registry-protocol.html
* https://www.terraform.io/docs/internals/remote-service-discovery.html