Terraform GUI is a web application that allows developers and DevOps begginers to learn about Terraform, an open-source, Infrastructure as Code, software tool created by HashiCorp.
The main goal of this is tool is to make Terraform understandable for everyone, with a different approach from the original HCL file structure.
This tool provides:
- Graphical User Interface with cell representation of web ressources of providers
- Ressources forms for templating HCL files
- Terraform HCL file generation for provider, ressources, variables, outputs [...] used for deployment
- ZIP downloaded solution for planning and applying Terraform files
The structure of this project follows these conventions.
/.github
: Conventions, template, labels, ci, cd, settings/api
: Symfony API files/build
: Dockerfiles/deploy
: Deployment-related Terraform files/docs
: Swagger documentation/samples
: Terraform samples for usecase/web
: ReactJS web files
The project use Docker and Docker Compose to build and run local and distant images in our workspace.
All the images use the same network, more informations at docker-compose.yml
API documentation: https://terraform-gui.github.io/terraform-gui/
CONTAINER | PORT | IMAGE |
---|---|---|
REACTJS | 3000:3000 |
build/package/web/Dockerfile.dev |
SYMFONY | 8080:80 |
build/package/api/Dockerfile.dev |
MONGODB | 27017:27017 |
mongo:latest |
MAILCATCHER | 1080:1080 |
schickling/mailcatcher:latest |
make setup-env start logs
Display informations about other commands.
Setup the API, start containers & output logs in terminal.
Up the containers with full cache reset to avoid cache errors.
Down the containers.
Display and follow the logs.
API-related commands
The CI workflow is located at .github/workflows/web.ci.yml. It's triggered at each push in /web folder on all branches.
It consist of:
- install Node on the VM
- get the dependancies using the cache of other Actions run
- install deps
- build the application
The CD workflow is triggered a each push on main
branches (main/dev/ops
).
It consist of:
- login into the GitHub container registry (ghcr.io)
- build and push the Docker images using the production Dockerfile After that, you can check the pushed container here: https://github.com/orgs/Terraform-GUI/packages?repo_name=terraform-gui
Under MIT license.