Giter VIP home page Giter VIP logo

gaia-app / gaia Goto Github PK

View Code? Open in Web Editor NEW
958.0 15.0 86.0 5.33 MB

Gaia is a Terraform ๐ŸŒ UI for your modules, and self-service infrastructure ๐Ÿ‘จโ€๐Ÿ’ป

Home Page: https://gaia-app.io

License: Mozilla Public License 2.0

Java 34.60% HTML 1.73% CSS 8.36% JavaScript 5.56% Vue 16.94% Dockerfile 0.04% Kotlin 23.02% ANTLR 0.33% HCL 9.07% Gherkin 0.19% Mustache 0.15%
terraform infrastructure-as-code self-service terraform-modules service-infrastructure terraform-ui

gaia's Introduction

Gaia is a Terraform UI for your Terraform modules, and self-service infrastructure.

Build Status Quality Gate Status Coverage Docker Pulls Dependabot Status

What is it?

Gaia is a web application to import and run your Terraform modules. It features :

  • importing modules from source code (Github/Gitlab)
  • validation of Terraform variables values (mandatory variables, regex-based validation)
  • setting up default values or masking variables for your users
  • running modules (plan/apply/destroy) in one click and managing Terraform state
  • team management

Documentation

Go to docs.gaia-app.io for the full documentation.

Screenshots

The module edition view allows you to edit module details, such as variables and their validation.

module edition view

The stack view helps you to input your variable values, and shows job results and latest output values.

stack edition view

The job view shows you the Terraform workflow, and the logs of the plan and apply logs

job view

Requirements

Gaia needs :

  • a docker daemon (used to run Terraform itself)
  • and a MongoDb database (to store its data)
    • we currently support MongoDb 4.0 only

Quick start

See the documentation at https://docs.gaia-app.io/ for quick-start instructions.

Contributors

Gaia is made with โค๏ธ in ๐Ÿ‡ซ๐Ÿ‡ท by Cyril DUBUISSON and Julien WITTOUCK

gaia's People

Contributors

binlab avatar cdubuisson avatar dependabot-preview[bot] avatar juwit avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gaia's Issues

โœจ : healthcheck endpoint

Is your feature request related to a problem? Please describe.
A healthcheck endpoint is necessary when gaia is deployed behind a load-balancer

Describe the solution you'd like
activate spring-boot-actuator ? only the /health endpoint ?

Describe alternatives you've considered
None

Additional context
N/A

โœจ : mesure job execution time

Mesure job execution time and display it on the job list.

This could also help to estimate job duration and show it to the user in the job execution screen

โœจ : retry job

Is your feature request related to a problem? Please describe.
It would be useful to be able to "retry" a job from the job screen.

Describe the solution you'd like
Maybe a simple "retry" button on the job page.

Describe alternatives you've considered
N/A

Additional context
N/A

๐Ÿšธ : log user actions

Is your feature request related to a problem? Please describe.
user actions should be logged, for security auditing reasons, and also to be able to see who did what (who deployed this new stack? who stopped my stack?)

Describe the solution you'd like
We should log :

  • who created stacks
  • who started job executions

It would be nice in the job list, to see who launched what...

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : stack - add destroy feature

add the "destroy" stack feature.

Add a "destroy" button on the stack page, which starts a terraform destroy job.
The stack should then be in the state "DESTROYED".

โœจ : stack (creation mode) - make specific form fields mandatory

Is your feature request related to a problem? Please describe.
In the stack screen , some fields should be mandatory:

  • name
  • variables if specified (see #72)

Describe the solution you'd like
Make the fields mandatory. If a mandatory field is empty, the input should be highlighted in red and the save should not be executed.
Check the fields in the view and in the controller.

Describe alternatives you've considered
In creation mode, the mandatory fields could be autofilled by default from the module fields.

Additional context
For the variables part, issue #72 should treated first.

โœจ : modules mgmt - set variables as unmodifiable

Some variables could be made "unmodifiable" by module users.

To do so, add a switch or a checkbox in the module definition, next to each variables in the module edit view.
A default value MUST be declared to do so.

Then in the stack view, the variable MUST not be visible or editable by users.

๐Ÿ› : keep sidebar status when changing route

Describe the bug
When one a page if the sidebar is collapsed, changing the page makes the sidebar to be expanded. The sidebar should stay collapsed.

To Reproduce
Steps to reproduce the behavior:

  1. Go to any page
  2. Click on the sidebar toggle to collapse the left menu
  3. Go to any other page
  4. The sidebar is expanded again

Expected behavior
The status of the sidebar should remained untouched when changing routes.

Screenshots
N/A

Desktop (please complete the following information):

  • OS: Arch Linux (kernel 5.2.5-arch1-1)
  • Browser: Firefox Developer Edition 69.0b8 (64-bit)
  • Version: Gaia 1.0.0

Additional context
N/A

โœจ : job details

Is your feature request related to a problem? Please describe.
The job screen could be extended with job details such as :

  • its date
  • the time it tooks
  • a simple status view (success/failed)
  • who launched it
    job logs could be displayed bellow the job details

Describe the solution you'd like
We can take some inspiration on travis-ci or gitlab-ci :

travis :
image
gitlab:
image

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : stack - add a plan destroy feature

Is your feature request related to a problem? Please describe.
Currently, a stack can be destroyed, which is an irreversible action. One should be able to preview the destruction.

Describe the solution you'd like
Add a button in the stack page to visualize the impacts of the destroy action by launching the command terraform plan destroy

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : private modules/stacks

Is your feature request related to a problem? Please describe.
Some modules and stacks may be sensitve, so we want to make them invisible to other users.

Describe the solution you'd like
In the module & stack screen, we can add a simple checkbox to mark the module/stack private.
private module or stacks can only be seen by their owner.

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : use logger instead of stdout

Is your feature request related to a problem? Please describe.
we should log using logback logger

Describe the solution you'd like
Use the logback logger

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : add module description screen

As a simple user, I want to be able to see module details, in order to be able to choose the right module that suits my needs.

The module details screen could be inspired by terraform module screens in the terraform hub :
https://registry.terraform.io/modules/terraform-aws-modules/security-group/aws/3.0.1

The module details screen MUST contain :

  • short description of the module (name + description)
  • readme contents
  • input variables description
  • output variables description
  • a link to start using this module

The module details screen MAY contain :

  • estimated cost of ownership (see #43)
  • estimated duration of provisionning (see #37)

This screen should be read-only.

โœจ : autoscroll for job logs

Is your feature request related to a problem? Please describe.
When launching jobs, is would be nice to have a "autoscroll" or "follow logs" functionnality

Describe the solution you'd like
N/A

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : stack (edition mode) - make specific form fields mandatory

Is your feature request related to a problem? Please describe.
In the stack screen , some fields should be mandatory:

  • name
  • variables if specified (see #72)

Describe the solution you'd like
Make the fields mandatory. If a mandatory field is empty, the input should be highlighted in red and the save should not be executed.
Check the fields in the view and in the controller.

Describe alternatives you've considered
N/A

Additional context
For the variables part, issue #72 should treated first.

โœจ : add terraform version mgmt

Some modules may be written for terraform 0.11, others for terraform 0.12...

Add a way to specify which terraform version should be used for each module (in the module page). Maybe simply specify which docker image to use?

๐Ÿ’„ : add favicon

default favicon doesn't show up on all screens.

also, we should use a custom favicon, here is one i've generated from the icon's website (rename it to favicon.ico before using it)

favicon

โœจ : running jobs should be visible in history

Is your feature request related to a problem? Please describe.
In the stack screen, if a job is currently running, it should be visible in the job history part.

Describe the solution you'd like
Save the job once it is launched, not only it is finished. The job ill be saved with the status IN PROGRESS.

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : module - make specific form fields mandatory

Is your feature request related to a problem? Please describe.
In the module screen, some fields should be mandatory:

  • name
  • cli version
  • git repository url

Describe the solution you'd like
Make the fields mandatory. If a mandatory field is empty, the input should be highlighted in red and the save should not be executed.
Check the fields in the view and in the controller.
For field"CLI", by default, the value should be the lastest one.

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : notifications & webhooks

Is your feature request related to a problem? Please describe.
We should be able to :

  • send webhook notifications (to send notification to discord or slack when a stack is deployed or destroyed=
  • send mail notifications
  • receive webhook notifications (to refresh a stack state using a "plan", when the code for a module changes)

Describe the solution you'd like
TBD

Describe alternatives you've considered
N/A

Additional context
N/A

๐Ÿ”’ : add ldap authentication

Connecting to a OAuth/OpenId seems complicated and does not allow to fetch user authorities for the application.

Maybe we should think of a simpler system (using a custom auth, with database user storage), and integrate with a LDAP server, as we do in gitlab or sonarqube as an example

๐Ÿ”’ : admin password should be configurable

Is your feature request related to a problem? Please describe.
Admin password should be configurable, to replace the default one

Describe the solution you'd like
Use a properties gaia.admin-password

Describe alternatives you've considered
N/A

Additional context
N/A

๐Ÿ”ง : make settings persistent

Is your feature request related to a problem? Please describe.
Settings are mainly configured using properties or env vars.
As some settings may be modifiable via the "settings" screens, these should be made persistent.

Describe the solution you'd like
Settings should be persisted in database.

Describe alternatives you've considered
N/A

Additional context
N/A

๐Ÿ”’ : better users/groups/rights mgmt

Is your feature request related to a problem? Please describe.
we should provide a simple way to manage users:

  • users can be added to groups
  • module access can be granted on users/groups
    we can also create a set of roles :
  • READ (read only access on modules/stacks)
  • DEPLOY (run start/preview/destroy jobs)

Describe the solution you'd like
To be defined

Describe alternatives you've considered
N/A

Additional context
N/A

๐Ÿ”’ : secure "/api/state" endpoint

Is your feature request related to a problem? Please describe.
/api/state endpoint may expose sensitive information.
This endpoint MUST be secured.
terraform httpd backend supports BASIC http authentication, so /api/state should support this kind of auth.
When the endpoint is secured, the backend configuration should be generated using credentials that allow a specific module to connect to its backend.

See https://www.terraform.io/docs/backends/types/http.html

Describe the solution you'd like
Maybe we should generate a "one-time" couple of credentials when generating a backend configuration for a stack. Or at least, a unique couple of credentials for each stack, so that a stack owner cannot see other stacks information.
We may need to implement a custom spring UserDetailsService for this purpose.

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : module - add an option to specify mandatory variable

Is your feature request related to a problem? Please describe.
In the module screen, one should be able to specify if a variable is mandatory or not.

Describe the solution you'd like
Add a checkbox for each variable part to specify if it should be mandatory or not.

Describe alternatives you've considered
N/A

Additional context
N/A

โœจ : add type to jobs

A job should have a type.

The type of the job is displayed on the "stack" screen.

The currently implemented types are "preview" and "run", which are terraform plan and terraform apply. We can rename "preview" and "run" to comply with terraform vocabulary...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.