feat: add Terraform/OpenTofu registry remote type (#45)
Implements the Terraform Registry Protocol as a proxy remote type so
Terraform and OpenTofu can pull providers through the caching layer
without changing provider source addresses.
- New `terraform` package type with `construct_url` (prepends
`/v1/providers/`) and `resolve_content` (rewrites `download_url`,
`shasums_url`, `shasums_signature_url` to route through a companion
`releases_remote`)
- Built-in mutable pattern for provider version lists
(`{ns}/{type}/versions`)
- `releases_remote` config option links the registry remote to a
separate generic remote proxying the release CDN
- Client config: `.terraformrc` / `.tofurc` host block redirects
`registry.terraform.io` to the proxy without touching `.tf` files
- 8 unit tests + end-to-end test (OpenTofu 1.10 pulling hashicorp/vault
4.5.0 through docker-compose stack)
- Example config and README section added
This commit is contained in:
@@ -118,6 +118,21 @@ TEST_REMOTES = {
|
||||
"immutable_patterns": [r"^v3/files/.*\.tar\.gz$"],
|
||||
"cache": {"immutable_ttl": 0, "mutable_ttl": 600},
|
||||
},
|
||||
"terraform-registry-test": {
|
||||
"base_url": "https://registry.terraform.io",
|
||||
"package": "terraform",
|
||||
"immutable_patterns": [
|
||||
r"[^/]+/[^/]+/[^/]+/download/[^/]+/[^/]+$",
|
||||
],
|
||||
"releases_remote": "hashicorp-releases-test",
|
||||
"cache": {"immutable_ttl": 0, "mutable_ttl": 300},
|
||||
},
|
||||
"hashicorp-releases-test": {
|
||||
"base_url": "https://releases.hashicorp.com",
|
||||
"package": "generic",
|
||||
"immutable_patterns": [r".*\.zip$", r".*SHA256SUMS(\.sig)?$"],
|
||||
"cache": {"immutable_ttl": 0, "mutable_ttl": 0},
|
||||
},
|
||||
},
|
||||
"locals": {
|
||||
"local-test": {
|
||||
|
||||
Reference in New Issue
Block a user