/terralist

Manage your modules and providers with a REST API

Primary LanguageGoMozilla Public License 2.0MPL-2.0

Terralist

A truly private Terraform registry

About

Terralist is a private Terraform registry for providers and modules following the published HashiCorp protocols. It provides:

  • A secure way to distribute your confidential modules and providers;
  • [Soon] A management interface to visualize documentation;

Highlights

  • Login Functionality (docs): Require a token to access the data. It is integrated with Terraform, so you can authenticate to the registry directly through Terraform:

    $ terraform login registry.example.com
    $ terraform logout registry.example.com
    

    It can also generate custom API keys for an authenticated user, which can be used in pipelines: to upload and delete modules and providers; to fetch data - useful if you are using a Terraform Pull Request Automation tool.

  • Modules Registry: (docs) Stores modules data in a private storage (for example, an S3 bucket). When download request is received, calls the remote storage to generate a temporary public download URL and forwards the URL to the requester. Currently supported private storage:

    • AWS S3: uses a private S3 bucket
    • Proxy: forwards the URL received at creation
  • Provider Registry: (docs) Similar with modules registry. Currently supported private storage:

    • AWS S3: uses a private S3 bucket
    • Proxy: forwards the URL received at creation

Note: For Proxy storage mode, the URL management is up to you. If, for example, you are providing a git URL, then the same URL will be forwarded to the requester (Terraform).

Note: Terralist uses the same library Terraform uses to make downloads (go-getter), meaning that you can still use your favorite protocols while using Terralist. This is also an advantage for the Proxy mode users, which can use the same source that they would normally put in Terraform.

Disclaimer

This project is not meant to replace the public Terraform Registry. Its purpose is to mimic the public registry in a private environment.

Documentation

Work In Progress

This project is still work-in-progress and I am planning to release it soon.

Contributions

Each contribution is welcomed, if you want to contribute, open an issue or fork the repository and open a PR.