Tags DevOps, Cloud, Open-Source Date

Img Dash

A Unified Dashboard for Cloud VM images

The Problem with VM Image Management

If you’ve ever managed infrastructure across multiple cloud providers, you know the struggle of keeping track of VM images. Which images are still in use? What was the purpose of this image? Who created it and when? These questions often lead to a confusing jumble of spreadsheets, outdated documentation, and frustrating cloud console hopping.

I built this project because I wanted an easier way to visualize all Virtual Machine Images. It can be very inconvenient to view and manage all VM images especially across multiple cloud platforms.

As I found myself telling colleagues one too many times: “Im so sick of people not following naming conventions and keeping track of images in spreadsheets.”

Introducing Img-Dash

Img-Dash is a simple dashboard for VM images across AWS, GCP and Azure that you can run locally. It provides a centralized view of your virtual machine images across multiple cloud platforms, allowing you to easily track and manage these critical infrastructure components.

Key Features

Tech Stack

Img-Dash is built using modern, containerized technologies:

Getting Started with Img-Dash

Setting up Img-Dash on your local machine or server is straightforward using Docker. Here’s how to get it running:

Prerequisites

Before you begin, you’ll need:

Step 1: Clone the Repository

git clone https://github.com/yourusername/Img-Dash.git
cd Img-Dash

Step 2: Configure Environment Variables Create a .env file in the root directory with your credentials:

# AWS credentials
AWS_ACCESS_KEY_ID="your_aws_access_key_id" 
AWS_SECRET_ACCESS_KEY="your_aws_secret_access_key"

# GCP credentials
GOOGLE_APPLICATION_CREDENTIALS="service-account-key.json"
ORGANIZATION_ID="your_gcp_organization_id"
PROJECT_ID="your_gcp_project_id"

# Azure credentials
AZURE_TENANT_ID="your_azure_tenant_id"
AZURE_CLIENT_ID="your_azure_client_id"
AZURE_CLIENT_SECRET="your_azure_client_secret"
AZURE_SUBSCRIPTION_ID="your_azure_subscription_id"

# MongoDB credentials
MONGO_URI="your_mongodb_uri"
MONGO_DB_NAME="vm_images"
MONGO_COLLECTION_NAME="image_data"
MONGO_CONTEXT_COLLECTION_NAME="context_data"

For GCP, place your service account key JSON file in the backend directory.

Step 3: Configure Cloud Platforms Update the config.json file with your preferred settings:

{
    "enabled_cloud_platforms": {
        "aws": true,
        "azure": true,
        "gcp": true
    },
    "aws": {
        "regions": ["us-east-1", "us-west-2", "ap-south-1"]
    }
}

Step 4: Build and Run with Docker Compose This command builds the Docker containers for both the frontend and backend services and starts them.

Step 5: Access the Dashboard Once the containers are running, open your browser and navigate to:

You’ll see the login screen (use admin@admin.com / admin for the default credentials), and then you’ll be able to access the dashboard.

Using Img-Dash

Image Discovery

When you first access Img-Dash, it displays a list of all VM images from your configured cloud platforms. You can:

Image Details

Clicking on an image ID takes you to the details page, where you can see:

The Context Book: Adding Context to Images

One of the most powerful features of Img-Dash is the ability to add contextual information to images. This could be:

To add context:

  1. Navigate to an image’s details page
  2. Click “Attach” in the menu
  3. Enter a title and your context
  4. Click “Save”

This information is stored in your MongoDB database and linked to the specific image, creating an evolving documentation system that stays with your images.

Running on EC2 or Other Servers

If you want to run Img-Dash on an EC2 instance or other remote server:

  1. Launch an EC2 instance with Amazon Linux 2023

  2. Install Docker and Docker Compose:

sudo yum update -y
sudo yum install -y docker libxcrypt-compat
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ec2-user
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
  1. Configure security groups to allow traffic on ports 4173 (frontend) and 5001 (backend)

  2. Deploy your application using the steps above

  3. Access the dashboard via your EC2 instance’s public IP:

http://<EC2_PUBLIC_IP>:4173 

Conclusion

Img-Dash solves a common problem for cloud engineers and DevOps teams - how to maintain visibility and documentation of VM images across multiple cloud platforms. Rather than jumping between different cloud consoles or maintaining external spreadsheets, you can now have a single source of truth for all your images.

The ability to attach contextual information means you’re no longer dependent on naming conventions alone - you can provide rich documentation that stays with the image throughout its lifecycle.

I built this tool to solve a real problem I was facing, and I hope it helps you manage your cloud infrastructure more effectively too. Feel free to fork the project, open issues, or contribute enhancements!

The project is open source under the GNU General Public License v3.0 (GPL-3.0).

· DevOps, Cloud, Open-Source