Skip to content

Community maintained fork of Mist, an open source, multicloud management platform

License

Notifications You must be signed in to change notification settings

mistcommunity/mist-ce

banner GitHub Tag GitHub Issues or Pull Requests GitHub repo size GitHub License GitHub top language GitHub Downloads (all assets, all releases) GitHub Repo stars GitHub last commit (branch)

Mist

Community Edition

Features | Getting Started | Road Map | Documentation | Issues

mist-ce is an open-source, community maintained fork of mist.io, a multi-cloud management platform aiming to simplify and reduce the cost of administering public clouds, private clouds, hypervisors, containers and bare metal servers.


πŸ“„ Contents


πŸ”— Quick Links

Link Description
πŸ’‘ CONTRIBUTING Help to get started on contributing
⚠️ ISSUES Check for bug reports & feature requests
πŸ—ͺ DISCUSSIONS Discuss the direction of mist
πŸ”€ PULL REQUESTS Existing pull requests
πŸ‘¨πŸ»β€πŸ’» DEVELOPERS Guide on developing
πŸ“ CHANGELOG Current and legacy changelog
✨ FEATURES Feature tracking list
πŸ—ΊοΈ ROADMAP Rough development roadmap
🌿 BRANCHES Audit of legacy branches
πŸ”’ SECURITY Security information
πŸ€— CONDUCT Code of Conduct


ℹ️ About

Note

In December 2023, Mist.io Inc was acquired by Dell Technologies. Since then, the Enterprise Edition (EE) and Hosted Service (HS) are no longer available, while the Community Edition (CE) has not been maintained besides some security fixes contributed by the community.

From the post, they talk about how the sale impacted Mist Community Edition:

Impact on Mist Community Edition Unfortunately, our current workload does not leave us any capacity to keep maintaining our open source offering. At the same time, Dell Technologies has no immediate plans to release new versions of the Mist Community Edition. The open source code will remain archived on github.com/mistio and we will welcome any community efforts to bring it back to life.

This project, mistcommunity/mist-ce, aims to update the code so that Mist Community Edition works again, and is usable as an open source software. To see the status look at the issues page, or to try and spin it up, or help debug issues to get it working again, see the CONTRIBUTING guide.



🧐 Overview

Mist simplifies multi-cloud management. It offers a unified interface from where you can manage public clouds, private clouds, hypervisors, containers and bare metal servers. With Mist you can perform common management tasks like provisioning, orchestration, monitoring, automation and cost analysis.

  • πŸ› οΈExtensibility: Mist comes with a RESTful API and a CLI, so you can easily integrate it into your existing workflows.
  • πŸ’ΈReduce Costs: Original Mist users included organizations like Juniper Networks, SevOne, Windstream, National Bank of Greece, Shoprite and more. They all report faster roll-outs while reducing their bills and management overheads by 40%-60%.
  • ✨Simplicity: A core focus is to simplify the user experience as much as possible
  • 🧾Open Source: Mist Community Edition (CE) is licensed under the Apache License v2. It is ideal for teams with a DIY approach.
  • πŸ“±Mobile Friendly: Originally designed to be functional on a mobile device.


πŸ–ΌοΈ Screenshots

These screenshots are from the original working project and do not represent the current state.



πŸ”  Terminology

Some terms are used very often in Mist. Below is a list of the most basic ones to help you avoid any confusion:

Term Description
☁︎ Cloud Any service that provides on-demand access to resources, e.g. public clouds, private clouds, hypervisors, container hosts, Kubernetes clusters, bare metal servers, etc.
πŸ–₯️ Machine Any computing resource. There are many types of machines and some machines may contain other machines.
πŸ’Ύ Volume Any physical or virtual data storage device, e.g. physical HDD/SSD, cloud disks, EBS volumes etc. Volumes may be attached on machines. Volumes may be provisioned along with machines or independently.
🌐 Network Private network spaces that machines can join, e.g. AWS VPCs.
πŸ“œ Script An executable (e.g. bash script) or an Ansible playbook that can run on machines over SSH. Scripts may be added inline or by a reference to a tarball or a Git repository.
πŸ“ Template A blueprint that describes the full lifecycle of an application that may require multiple computing resources, network, storage and additional configurations. For example, the provided Kubernetes template enables the deployment of a Kubernetes cluster on any cloud and provides workflows to easily scale the cluster up or down. Currently, Mist supports Cloudify blueprints. Helm and Terraform support is coming soon.
πŸ—ƒοΈ Stack The deployment of a template is a stack. A stack may include resources (e.g. machines, networks, volumes etc) and provides a set of workflow actions that can be performed. A stack created by the Kubernetes template refers to a Kubernetes cluster. It includes references to all control and data plane nodes. It provides scale up & down workflows that can be applied to the cluster.
⚫ Tunnel A secure, point-to-point VPN tunnel enabling Mist to access infrastructure that is not on a publicly addressable network space.


✨ Features

See FEATURES.md for details.

πŸ’‘ Technologies

  • Support for more than 20 infrastructure technologies.

πŸ’Έ Cost Management

  • Instant visibility of all the available resources across clouds, grouped by tags.
  • Instant reporting/estimation of the current infrastructure costs.
  • Compare current & past costs, correlate with usage, provide right-sizing recommendations (EE & HS only - TBA).

πŸ” RBAC

  • Set fine-grained access control policies per team, tag, resource and/or action (EE & HS only - TBA).
  • Set governance constraints: e.g. quotas on cost per user/team, required expiration dates (EE & HS only - TBA).

πŸ”„ Deployment & Lifecycle

  • Provision new resources on any cloud including machines, clusters, volumes, networks, zones and DNS records.
  • Deploy and scale Kubernetes clusters on any supported cloud.
  • Perform lifecycle actions on existing resources, e.g. stop, start, reboot, resize, destroy, etc.
  • Set schedules that trigger scripts or machine lifecycle actions.
  • Upload infrastructure templates that may describe complex deployments and workflows (EE & HS only - TBA).

πŸ‘€ Monitoring

  • Instant audit logging for all actions performed through Mist or detected through continuous polling.
  • Monitor machines, display real time system & custom metrics and store them for long term access.

πŸ€– Automation

  • Upload scripts and run them on any machine while enforcing audit logging and centralized control of SSH keys.
  • Command shell on any machine within the browser or through the CLI, enforcing audit logging and centralized control of keys.
  • Set rules on metrics or logs that trigger notifications, webhooks, scripts or lifecycle actions.


πŸ“– Documentation

After the sale to Dell the offical documention site docs.mist.io disappeared, so the latest documentation we have is available on the Internet Archive's Wayback Machine: docs.mist.io (last updated October 2, 2023)

Documentation will be available as a GitHub pages site and as a self-hosted container (TBA).

Important

While the original mist.io site exists, we have no access to it, and it is not part of this project.



πŸ—οΈ Architecture

Note

This is the architecture laid out by the original developers, the general design will likely stay they same, however the individual services may change over time.

Mist is a cloud native application split into microservices which are packaged as Docker containers. It can be deployed on a Kubernetes cluster using Helm or a single host with Docker Compose.

The most notable components are the following:

Function Description
Mist UI A web application built with Web Components and Polymer
REST API Backend service that serves requests from clients
WebSocket API Sends real-time updates to connected clients and proxies shell connections
Hubshell A service that opens SSH connections to machines or shell connections using the Docker API
Dramatiq Workers, running asynchronous jobs
APScheduler Scheduler that schedules polling tasks, rule checks, as well as user defined scheduled actions.
RabbitMQ Message queue service.
MongoDB The main database
Elasticsearch For storing and searching logs
Logstash For routing logs to Elasticsearch
Telegraf A data collection agent, installed on monitored machines.
Gocky The relay to receive and pre-process monitoring metrics
InfluxDB Time series database for metrics
VictoriaMetrics Alternative time series database.

Architecture.png

  • The user interacts with the RESTful Mist API through client apps like the Mist UI in the browser or command line tools (e.g. cURL, Mist CLI, etc.).
  • The Mist UI, apart from invoking the RESTful API, also establishes a WebSocket connection. This is used to receive real time updates and to proxy shell connections to machines.
  • The Mist API server interacts with the respective API's of the target clouds, either directly, or by adding tasks that get executed asynchronously by Dramatiq workers. The messaging is following the AMQP protocol and gets coordinated by RabbitMQ.
  • The main data store is MongoDB. Logs are being stored in Elasticsearch. Time series data go to either VictoriaMetrics or InfluxDB, depending on the installation.
  • Rule checks, polling tasks & user tasks are triggered by the scheduler service. Whenever a shell connection is required (e.g. SSH, Docker shell, etc.), Sheller establishes the connection and makes it available through the WebSocket API.


πŸš€ Installation

Warning

NOT FOR PRODUCTION USE!
With the current state of the codebase, we are still identifying what does and does not work. We can't guarantee a feature is operational see FEATURES.
If you want to contribute by testing features, see CONTRIBUTING

tl;dr: docker compose up -d

We aim to simplify the process in the future, as well as including a Traefik docker-compose.yml configuration example. However, if you know what you are doing and are a veteran in the world self-hosting, you can modify the docker-compose.yml to suite your specific setup.

You can install Mist in several ways, depending on your needs:



πŸ€” Questions, Feedback

Link Description
⚠️ ISSUES Check for bug reports & feature requests
πŸ—ͺ DISCUSSIONS Topics on various decisions for the project by the community
πŸ”€ PULL REQUESTS Existing pull requests


⬆️ BACK TO TOP


Licensed under Apache 2.0

Thanks for visiting :)

About

Community maintained fork of Mist, an open source, multicloud management platform

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 42