At the time I’m writing this message, there is not yet enough of the implementation included in the
master branch for you to try this out yet. We’ll publish beta releases containing this functionality once it’s ready for testing, and we’d love to hear feedback at that point.
On the subject of a registry server implementation: as with the module registry, we intend to publish documentation on the protocol that Terraform is expecting so that others can implement compatible servers. For a simple private registry it should be sufficient to just deploy a static website somewhere with JSON index files so that Terraform can find the providers, rather than needing a custom server implementation necessarily.
The other detail here is that, due to the new namespace scheme for providers coming in Terraform 0.13, running your own registry host will create a separate namespace of providers, rather than behaving as a “mirror” for
registry.terraform.io. Therefore it won’t be possible to use that protocol to create an internal mirror of an official provier like
registry.terraform.io/hashicorp/aws, because publishing it at a different registry would give it a new identity from Terraform’s perspective. The private registry mechanism is therefore intended for serving up your own internal providers (
you.example.com/your-org/your-system), rather than for creating local mirrors of existing providers.
However, we are planning to include a separate mechanism for using filesystem-based and network-based “mirrors” that can serve as a secondary source for an upstream provider, thus allowing
registry.terraform.io/hashicorp/aws to be served from somewhere other than
registry.terraform.io while retaining the hostname part of the address. This distinction may seem opaque right now because you can’t see how the new heirarchical namespacing is working, but I think it will be come clearer once we have the beta out. The support for a network-based (rather than filesystem-based) mirror may not arrive in 0.13.0 (to reduce scope) but will at least appear in a minor release shortly after.