Mantl is a modern platform for rapidly deploying globally distributed services
Theaxiom Merge pull request #2028 from ioben/patch-1
Fix Distributive link in README
Latest commit b042447 Feb 3, 2018
Permalink
Failed to load latest commit information.
.github request logs in the issue template (#1770) Jul 28, 2016
addons Merge pull request #1767 from mantl/feature/users-addon Apr 9, 2017
docs Merge branch 'master' into aws_demo_docs_update Apr 18, 2017
examples update references to vagrant ips in docs Aug 15, 2016
group_vars/all update kubernetes 1.3.3 with consul integration (#1793) Aug 11, 2016
library patch ansible's 'kube' state May 27, 2016
packer Reverting a change needed during debugging. May 12, 2017
playbooks Removing Ansible max version Apr 21, 2017
plugins terraform.py: sync from upstream (#1587) Jun 22, 2016
roles Update README.rst Feb 3, 2018
ssl Clean up and refactor k8s roles (#1731) Jul 19, 2016
terraform Fixed typo in dns host name fior aws instances Apr 24, 2017
testing Revert "[TRAVIS] Expand skipping logic in travis.py" Apr 9, 2017
vagrant Merge pull request #1991 from bbaassssiiee/packer_update Jun 5, 2017
.dockerignore Add Dockerfile to provide operational environment. May 21, 2015
.gitignore Adding .idea/ to .gitignore Apr 20, 2017
.mention-bot Update .mention-bot Apr 24, 2017
.travis.yml Commenting out clouds we no longer have access too Apr 14, 2017
CHANGELOG.md update release date in changelog (#1665) Jul 7, 2016
DCO Adding developer certificate of origin May 21, 2017
Dockerfile Updating docker to point to new repo Apr 6, 2017
LICENSE Update LICENSE Apr 1, 2015
README.md Update README.md Jun 7, 2017
RELEASES.md add releases documentation May 11, 2016
Vagrantfile Still need to update Vagrant box Apr 21, 2017
ansible.cfg gluster: move out of default and document that Dec 2, 2015
ci.enc Add travis user for OpenStack testing Mar 21, 2016
code-of-conduct.md Code of conduct Apr 12, 2017
docker_launch.sh Fix symlink/env issues, enable ssh-agent & destroy Mar 21, 2016
requirements.txt Adding Ansible version cap back to requirements.txt to fix Vagrant Apr 25, 2017
sample.yml Removing `common` role from plays which are not targetting `all` as i… Apr 21, 2017
security-setup security-setup: clean up CA generation Jul 6, 2016

README.md

image

Overview

Join the chat at https://gitter.im/CiscoCloud/mantl Build Status Stories in Progress

Mantl is a modern, batteries included platform for rapidly deploying globally distributed services

Table of Contents

Features

Core Components

  • Consul for service discovery
  • Vault for managing secrets
  • Mesos cluster manager for efficient resource isolation and sharing across distributed services
  • Marathon for cluster management of long running containerized services
  • Kubernetes for managing, organizing, and scheduling containers
  • Terraform deployment to multiple cloud providers
  • Docker container runtime
  • Traefik for proxying external traffic
  • mesos-consul populating Consul service discovery with Mesos tasks
  • Mantl API easily install supported Mesos frameworks on Mantl
  • Mantl UI a beautiful administrative interface to Mantl

Addons

  • ELK Stack for log collection and analysis
  • GlusterFS for container volume storage
  • Docker Swarm for clustering Docker daemons between networked hosts
  • etcd, distributed key-value store for Calico
  • Calico, a new kind of virtual network
  • collectd for metrics collection
  • Chronos a distributed task scheduler
  • Kong for managing APIs

See the addons/ directory for the most up-to-date information.

Goals

  • Security
  • High availability
  • Rapid immutable deployment (with Terraform + Packer)

Architecture

The base platform contains control nodes that manage the cluster and any number of agent nodes. Containers automatically register themselves into DNS so that other services can locate them.

mantl-diagram

Control Nodes

The control nodes manage a single datacenter. Each control node runs Consul for service discovery, Mesos and Kubernetes leaders for resource scheduling and Mesos frameworks like Marathon.

The Consul Ansible role will automatically bootstrap and join multiple Consul nodes. The Mesos role will provision highly-availabile Mesos and ZooKeeper environments when more than one node is provisioned.

Agent Nodes

Agent nodes launch containers and other Mesos- or Kubernetes-based workloads.

Edge Nodes

Edge nodes are responsible for proxying external traffic into services running in the cluster.

Getting Started

All development is done on the master branch. Tested, stable versions are identified via git tags. To get started, you can clone or fork this repo:

git clone https://github.com/mantl/mantl.git

To use a stable version, use git tag to list the stable versions:

git tag
0.1.0
0.2.0
...
1.2.0


git checkout 1.2.0

A Vagrantfile is provided that provisions everything on a few VMs. To run, first ensure that your system has at least 2GB of RAM free, then just:

vagrant up

Note:

  • There is no support for Windows at this time, however support is planned.
  • Use the latest version of Vagrant for best results. Version 1.8 is required.
  • There is no support for the VMware Fusion Vagrant provider; hence your provider is set to Virtualbox in your Vagrantfile.

Software Requirements

The only requirements for running Mantl are working installations of Terraform and Ansible (or Vagrant, if you're deploying to VMs). See the "Development" sections for requirements for developing Mantl.

Deploying on multiple servers

Please refer to the Getting Started Guide, which covers cloud deployments.

Documentation

All documentation is located at http://docs.mantl.io.

To build the documentation locally, run:

sudo pip install -r requirements.txt
cd docs
make html

Roadmap

Mesos Frameworks

  • Marathon
  • Kafka
  • Riak
  • Cassandra
  • Elasticsearch
  • HDFS
  • Spark
  • Storm
  • Chronos
  • MemSQL

Note: The most up-to-date list of Mesos frameworks that are known to work with Mantl is always in the mantl-universe repo.

Security

  • Manage Linux user accounts
  • Authentication and authorization for Consul
  • Authentication and authorization for Mesos
  • Authentication and authorization for Marathon
  • Application load balancer (based on Traefik)
  • Application dynamic firewalls (using consul template)

Operations

  • Logging (with the ELK stack)
  • Metrics (with the collectd addon)
  • In-service upgrade with rollback
  • Autoscaling of worker nodes
  • Self maintaining system (log rotation, etc)
  • Self healing system (automatic failed instance replacement, etc)

Supported Platforms

Community Supported Platforms

Please see milestones for more details on the roadmap.

Development

If you're interested in contributing to the project, install Terraform and the Python modules listed in requirements.txt and follow the Getting Started instructions. To build the docs, enter the docs directory and run make html. The docs will be output to _build/html.

Good issues to start with are marked with the low hanging fruit tag.

To keep your fork up to date.

1. Clone your fork:

git clone git@github.com:YOUR-USERNAME/mantl.git

2. Add remote from original repository in your forked repository:

cd into/cloned/fork-repo
git remote add upstream git://github.com/mantl/mantl.git
git fetch upstream

3. Updating your fork from original repo to keep up with their changes:

git pull upstream master

Getting Support

If you encounter any issues, please open a Github Issue against the project. We review issues daily.

We also have a gitter chat room. Drop by and ask any questions you might have. We'd be happy to walk you through your first deployment.

Cisco Intercloud Services provides support for OpenStack based deployments of Mantl.

License

Copyright © 2015 Cisco Systems, Inc.

Licensed under the Apache License, Version 2.0 (the "License").

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.