Tags | DevOps, Cloud, Open-Source | Date | |
---|---|---|---|
Img DashA 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
- Cross-Cloud Visibility: Consolidated view of all VM images from AWS, Azure, and GCP in one interface
- Context Book: Attach, view, or delete contextual information like IaC code, event data, or compliance scripts
- Usage Tracking: See exactly which VMs are currently using each image
- Simple Search: Quickly find images with an intuitive search interface
- Metadata Display: View detailed image metadata from each cloud platform
Tech Stack
Img-Dash is built using modern, containerized technologies:
- Backend: Python (Flask) with MongoDB for persistence
- Frontend: React (Vite) with Material-UI and Refine for the UI framework
- Cloud Integration: Native SDKs for AWS, Azure, and GCP
- Deployment: Docker and Docker Compose for easy setup
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:
- Docker and Docker Compose installed
- Cloud credentials for the platforms you want to monitor (AWS, GCP, Azure)
- A MongoDB connection string (a free MongoDB Atlas cluster works great)
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:
- http://localhost:4173
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:
- Search for images by name or ID
- Sort images by various attributes
- Click the “Refresh” button to fetch the latest image data from your cloud providers
Image Details
Clicking on an image ID takes you to the details page, where you can see:
- Complete metadata about the image
- Which VMs are currently using the image
- Platform-specific details
- The Context Book for this image
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:
- Infrastructure as Code snippets used to create the image
- Release notes or change logs
- Compliance scripts or documentation
- Usage guidelines for the team
To add context:
- Navigate to an image’s details page
- Click “Attach” in the menu
- Enter a title and your context
- 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:
-
Launch an EC2 instance with Amazon Linux 2023
-
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
-
Configure security groups to allow traffic on ports 4173 (frontend) and 5001 (backend)
-
Deploy your application using the steps above
-
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).