Sign inSign up

trainlineeurope/terraboard

By trainlineeurope

•Updated almost 9 years ago

Fork of camptocamp terraboard image

Image
0

207

trainlineeurope/terraboard repository overview

⁠Terraboard

Terraboard Logo

šŸŒ šŸ“‹ A web dashboard to inspect Terraform States

Docker Pulls Go Report Card Gitter Build Status Coverage Status By Camptocamp

⁠What is it?

Terraboard is a web dashboard to visualize and query Terraform⁠ states. It currently features:

  • an overview page listing the most recently updated state files with their activity
  • a state page with state file details, including versions and resource attributes
  • a search interface to query resources by type, name or attributes
  • a diff interface to compare state between versions

It currently only supports S3 as a remote state backend, and dynamoDB for retrieving lock informations.

⁠Overview

The overview presents all the state files in the S3 bucket, by most recent modification date.

Screenshot Overview

The search view allows to find resources by various criteria.

Screenshot Search

⁠State

The state view presents details of a Terraform state at a given version.

Screenshot State

⁠Compare

From the state view, you can compare the current state version with another version.

Screenshot Compare

⁠Requirements

Terraboard currently supports getting the Terraform states from AWS S3. It requires:

  • A versioned S3 bucket name with one or more Terraform states, named with a .tfstate suffix
  • AWS credentials with the following rights on the bucket:
    • s3:GetObject
    • s3:ListBucket
    • s3:ListBucketVersions
    • s3:GetObjectVersion
  • A running PostgreSQL database
  • If you want to retrieve lock states from a dynamoDB table⁠, you need to make sure the provided AWS credentials have dynamodb:Scan access to that table.

⁠Use with Docker

$ docker run -d -p 8080:8080 \
   -e AWS_REGION=<AWS_DEFAULT_REGION> \
   -e AWS_ACCESS_KEY_ID=<AWS_ACCESS_KEY_ID> \
   -e AWS_SECRET_ACCESS_KEY=<AWS_SECRET_ACCESS_KEY> \
   -e AWS_BUCKET=<terraform-bucket> \
   -e AWS_DYNAMODB_TABLE=<terraform-locks-table> \
   -e DB_PASSWORD="mygreatpasswd" \
   --link postgres:db \
   camptocamp/terraboard:latest

and point your browser to http://localhost:8080⁠

⁠Use with Rancher

Camptocamp's Rancher Catalog⁠ contains a Terraboard template to automate its installation in Cattle.

⁠Authentication and base URL

Terraboard does not implement authentication. Instead, it is recommended to use an authentication proxy such as oauth2_proxy⁠.

If you need to set a route path for Terraboard, you can set a base URL by passing it as the BASE_URL environment variable.

When using an authentication proxy, Terraboard will retrieve the logged in user and email from the headers passed by the proxy. You can also pass a TERRABOARD_LOGOUT_URL parameter to allow users to sign out of the proxy.

⁠Install from source

$ go get github.com/camptocamp/terraboard

⁠Development

⁠Architecture

Terraboard is made of two components:

⁠A server process

The server is written in go and runs a web server which serves:

  • the API on known access points, taking the data from the PostgreSQL database
  • the index page (from static/index.html⁠) on all other URLs

The server also has a routine which regularly (every 1 minute) feeds the PostgreSQL database from the S3 bucket.

⁠A web UI

The UI is an AngularJS application served from index.html. All the UI code can be found in the static/⁠ directory.

⁠Testing
$ docker-compose build && docker-compose up -d
# Point your browser to http://localhost
⁠Contributing

See CONTRIBUTING.md⁠

The Terraboard logo is based on an image by Daniel R. Strebe, CC BY-SA 3.0, 15 August 2011⁠

Tag summary

Content type

Image

Digest

Size

4.8 MB

Last updated

almost 9 years ago

docker pull trainlineeurope/terraboard