Terraform Registry
Problem to solve
As a DevOps engineer, in order to use versioned modules with Terraform, I'd like to use a GitLab integrated Terraform registry.
Currently, the only convenient way to store private Terraform providers is by using Terraform Cloud without having to write your own service. While this may work for some organizations, I would like to store custom in-house providers on my infrastructure. Since I already use GitLab extensively on my infrastructure, I would like to store the source code for the Terraform provider, the definition of the CI/CD pipeline, and the resulting packing all in the same place.
Intended users
- Sasha (Software Developer)
- Devon (DevOps Engineer)
- Sidney (Systems Administrator)
- Sam (Security Analyst)
Further details
Proposal
- We want to support semver versioning in accessing modules
- How are modules published? A single git repo might have multiple Terraform modules. Basically, every directory with terraform files might be treated as a module. How do we want to "mark" a directory to be a module?
- How can we help with module discovery? Once a module is published, it's useful only if people can find it. In the case of Terraform, best practice is to provide an example directory that shows the module in action (and is used for optional tests too). There are tools to generate automatic documentation for a module, do we want to fall back to it if no documentation exists?
This is the recommended way to provide a module registry in order to allow downloading the modules locally.
- https://www.terraform.io/docs/internals/remote-service-discovery.html
- https://www.terraform.io/docs/commands/login.html
Permissions and Security
Documentation
Availability & Testing
What does success look like, and how can we measure that?
What is the type of buyer?
Links / references
Edited by 🤖 GitLab Bot 🤖