terraform gui

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

Terraform GUI

LABELER [CI]
 WEB [CI]
 WEB [CD]
API [CD]




I - Introduction

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

II - Table of content

III - Folder structure

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

IV - Project setup

The project use Docker and Docker Compose to build and run local and distant images in our workspace.

A - Stack

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

B - Makefile

TL;DR

make setup-env start logs

make help

Display informations about other commands.

make init

Setup the API, start containers & output logs in terminal.

make start

Up the containers with full cache reset to avoid cache errors.

make stop

Down the containers.

make logs

Display and follow the logs.

make api-*

API-related commands

V - CI/CD, release and container registry

A - CI

 WEB [CI]

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

B - CD

 WEB [CD]
API [CD]

The CD workflow is triggered a each push on main branches (main/dev/ops).

It consist of:

VI - License

Under MIT license.