Idea: Terraform ServiceHub
This is an idea that is on my mind for quite some time and I struggle to find the software that implements it. And I am not implementing it by myself, for the moment. But maybe this is some challenge for you?
The Idea
To create a software that can offer a simple portal to instantiate Terraform modules and manage the state of the instance (CREATE/UPDATE/DELETE). The focus is on allowing novice users to create their own instances of a Terraform module created and maintained by experts. The novice user shall be able to create VMs, Cluster, Users, Groups, Permissions, etc.. that are offered in a catalog of services, the “ServiceHub”.
Features
Following a list of features.
Type | Description |
---|---|
must | Service catalog |
must | Instance CREATE/UPDATE/DELETE |
must | Mass management of service instances (eg. CREATE/DELETE) |
must | Simple portal in self-service fashion, catalog and service instances |
must | Parameterized CREATE |
must | State storage |
could | LDAP/AD authentication |
could | State sub-store (eg. path) of user’s instances |
could | Role based access control |
could | Permission management for instances |
could | Obfuscate secrets |
could | Inheritance of predefined parameters and secrets |
could | Versioning of catalog items and instances pinned that version |
could | Smooth Git integration |
could | High Availability, Microservice |
Possible implementation
When thinking of a possible implementation, I would see the following components. Preferably as microservices on a container cluster.
- Web interface with Ruby on Rails or Sinatra
- Central Terraform state storage with s3/minio object storage
- Other storage also by s3/minio
- Sidekiq as job queue
- Workers executing Terraform as jobs from queue
What about Terraform Cloud & Enterprise?
Terraform Cloud & Enterprise seem nice for a skilled group of experts to leverage a service kind of portal. However it is not suitable (in my humble opinion) for the average person, the non-expert and a large sized enterprise as a self-service portal.
What about others?
There is ServiceNow and some other GUIs that implement a kinda like solution, however they are either too specific or too closed source to leverage.
Post
Do you have ideas? Are you open to implement this idea?