https://github.com/skyzyx/terraform-registry-protocol
Experimental
https://github.com/skyzyx/terraform-registry-protocol
Last synced: 3 months ago
JSON representation
Experimental
- Host: GitHub
- URL: https://github.com/skyzyx/terraform-registry-protocol
- Owner: skyzyx
- License: apache-2.0
- Created: 2021-03-03T05:51:48.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-03-03T06:28:35.000Z (over 5 years ago)
- Last Synced: 2025-04-01T18:15:23.415Z (about 1 year ago)
- Language: Makefile
- Size: 30.3 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
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