{"id":13466711,"url":"https://github.com/im2nguyen/rover","last_synced_at":"2025-05-14T20:07:31.137Z","repository":{"id":37920609,"uuid":"379820284","full_name":"im2nguyen/rover","owner":"im2nguyen","description":"Interactive Terraform visualization. State and configuration explorer.","archived":false,"fork":false,"pushed_at":"2024-07-13T05:34:10.000Z","size":5922,"stargazers_count":3112,"open_issues_count":45,"forks_count":187,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-04-02T09:18:14.309Z","etag":null,"topics":["diagram","interactive-visualizations","terraform","visualization"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/im2nguyen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-24T06:02:21.000Z","updated_at":"2025-04-02T03:58:34.000Z","dependencies_parsed_at":"2023-02-02T02:16:49.965Z","dependency_job_id":"a60a6835-7437-4ce7-9945-7be1b2748724","html_url":"https://github.com/im2nguyen/rover","commit_stats":{"total_commits":112,"total_committers":16,"mean_commits":7.0,"dds":0.5625,"last_synced_commit":"4be74731103aca85eee1dd93e47351e17979090b"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im2nguyen%2Frover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im2nguyen%2Frover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im2nguyen%2Frover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/im2nguyen%2Frover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/im2nguyen","download_url":"https://codeload.github.com/im2nguyen/rover/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248027406,"owners_count":21035594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["diagram","interactive-visualizations","terraform","visualization"],"created_at":"2024-07-31T15:00:49.121Z","updated_at":"2025-04-09T11:04:16.713Z","avatar_url":"https://github.com/im2nguyen.png","language":"Go","funding_links":[],"categories":["Go","visualization","Tools","Vue","terraform"],"sub_categories":["Community providers"],"readme":"## Rover - Terraform Visualizer\n\nRover is a [Terraform](http://terraform.io/) visualizer.\n\nIn order to do this, Rover:\n\n1. generates a [`plan`](https://www.terraform.io/docs/cli/commands/plan.html#out-filename) file and parses the configuration in the root directory or uses a provided plan.\n1. parses the `plan` and configuration files to generate three items: the resource overview (`rso`), the resource map (`map`), and the resource graph (`graph`).\n1. consumes the `rso`, `map`, and `graph` to generate an interactive configuration and state visualization hosts on `0.0.0.0:9000`.\n\nFeedback (via issues) and pull requests are appreciated!\n\n![Rover Screenshot](docs/rover-cropped-screenshot.png)\n\n## Quickstart\n\nThe fastest way to get up and running with Rover is through Docker.\n\nRun the following command in any Terraform workspace to generate a visualization. This command copies all the files in your current directory to the Rover container and exposes port `:9000`.\n\n```\n$ docker run --rm -it -p 9000:9000 -v $(pwd):/src im2nguyen/rover\n2021/07/02 06:46:23 Starting Rover...\n2021/07/02 06:46:23 Initializing Terraform...\n2021/07/02 06:46:24 Generating plan...\n2021/07/02 06:46:25 Parsing configuration...\n2021/07/02 06:46:25 Generating resource overview...\n2021/07/02 06:46:25 Generating resource map...\n2021/07/02 06:46:25 Generating resource graph...\n2021/07/02 06:46:25 Done generating assets.\n2021/07/02 06:46:25 Rover is running on 0.0.0.0:9000\n```\n\nOnce Rover runs on `0.0.0.0:9000`, navigate to it to find the visualization!\n\n### Run on Terraform plan file\n\nUse `-planJSONPath` to start Rover on Terraform plan file. The `plan.json` file should be in Linux version - Unix (LF), UTF-8.\n\nFirst, generate the plan file in JSON format.\n\n```\n$ terraform plan -out plan.out\n$ terraform show -json plan.out \u003e plan.json\n```\n\nThen, run Rover on it.\n\n```\n$ docker run --rm -it -p 9000:9000 -v $(pwd)/plan.json:/src/plan.json im2nguyen/rover:latest -planJSONPath=plan.json\n```\n\n### Standalone mode\n\nStandalone mode generates a `rover.zip` file containing all the static assets.\n\n```\n$ docker run --rm -it -p 9000:9000 -v \"$(pwd):/src\" im2nguyen/rover -standalone true\n```\n\nAfter all the assets are generated, unzip `rover.zip` and open `rover/index.html` in your favourite web browser.\n\n### Set environment variables\n\nUse `--env` or `--env-file` to set environment variables in the Docker container. For example, you can save your AWS credentials to a `.env` file.\n\n```\n$ printenv | grep \"AWS\" \u003e .env\n```\n\nThen, add it as environment variables to your Docker container with `--env-file`.\n\n```\n$ docker run --rm -it -p 9000:9000 -v \"$(pwd):/src\" --env-file ./.env im2nguyen/rover\n```\n\n### Define tfbackend, tfvars and Terraform variables\n\nUse `-tfBackendConfig` to define backend config files and `-tfVarsFile` or `-tfVar` to define variables. For example, you can run the following in the `example/random-test` directory to overload variables.\n\n```\n$ docker run --rm -it -p 9000:9000 -v \"$(pwd):/src\" im2nguyen/rover -tfBackendConfig test.tfbackend -tfVarsFile test.tfvars -tfVar max_length=4\n```\n\n### Image generation\n\nUse `-genImage` to generate and save the visualization as a SVG image.\n\n```\n$ docker run --rm -it  -v \"$(pwd):/src\" im2nguyen/rover -genImage true\n```\n\n## Installation\n\nYou can download Rover binary specific to your system by visiting the [Releases page](https://github.com/im2nguyen/rover/releases). Download the binary, unzip, then move `rover` into your `PATH`.\n\n- [rover zip — MacOS - intel](https://github.com/im2nguyen/rover/releases/download/v0.3.2/rover_0.3.2_darwin_amd64.zip)\n- [rover zip — MacOS - Apple Silicon](https://github.com/im2nguyen/rover/releases/download/v0.3.2/rover_0.3.2_darwin_arm64.zip)\n- [rover zip — Windows](https://github.com/im2nguyen/rover/releases/download/v0.3.2/rover_0.3.2_windows_amd64.zip)\n\n### Build from source\n\nYou can build Rover manually by cloning this repository, then building the frontend and compiling the binary. It requires Go v1.21+ and `npm`.\n\n#### Build frontend\n\nFirst, navigate to the `ui`.\n\n```\n$ cd ui\n```\n\nThen, install the dependencies.\n\n```\n$ npm install\n```\n\nFinally, build the frontend.\n\n```\n$ npm run build\n```\n\n#### Compile binary\n\nNavigate to the root directory.\n\n```\n$ cd ..\n```\n\nCompile and install the binary. Alternatively, you can use `go build` and move the binary into your `PATH`.\n\n```\n$ go install\n```\n\n### Build Docker image\n\nFirst, compile the binary for `linux/amd64`.\n\n```\n$ env GOOS=linux GOARCH=amd64 go build .\n```\n\nThen, build the Docker image.\n\n```\n$ docker build . -t im2nguyen/rover --no-cache\n```\n\n\n## Basic usage\n\nThis repository contains two examples of Terraform configurations in `example`.\n\nNavigate into `random-test` example configuration. This directory contains configuration that showcases a wide variety of features common in Terraform (modules, count, output, locals, etc) with the [`random`](https://registry.terraform.io/providers/hashicorp/random/latest) provider.\n\n```\n$ cd example/random-test\n```\n\nRun Rover. Rover will start running in the current directory and assume the Terraform binary lives in `/usr/local/bin/terraform` by default.\n\n```\n$ rover\n2021/06/23 22:51:27 Starting Rover...\n2021/06/23 22:51:27 Initializing Terraform...\n2021/06/23 22:51:28 Generating plan...\n2021/06/23 22:51:28 Parsing configuration...\n2021/06/23 22:51:28 Generating resource overview...\n2021/06/23 22:51:28 Generating resource map...\n2021/06/23 22:51:28 Generating resource graph...\n2021/06/23 22:51:28 Done generating assets.\n2021/06/23 22:51:28 Rover is running on 0.0.0.0:9000\n```\n\nYou can specify the working directory (where your configuration is living) and the Terraform binary location using flags.\n\n```\n$ rover -workingDir \"example/eks-cluster\" -tfPath \"/Users/dos/terraform\"\n```\n\nOnce Rover runs on `0.0.0.0:9000`, navigate to it to find the visualization!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim2nguyen%2Frover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fim2nguyen%2Frover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fim2nguyen%2Frover/lists"}