Jay Taylor's notes

back to listing index


[web search]
Original source (github.com)
Tags: cisco ansible automation github.com
Clipped on: 2016-06-14

Skip to content
Mantl is a modern platform for rapidly deploying globally distributed services http://mantl.io
Python HCL Shell
Latest commit fa082de a day ago Image (Asset 2/8) alt= siddharthist committed with ryane Hardcode consul_dns_domain (#1449)
.github pull request template: remove rebase requirement 3 months ago
addons Hardcode consul_dns_domain (#1449) a day ago
docs Hardcode consul_dns_domain (#1449) a day ago
examples Examples/spark fix (#1380) 2 months ago
group_vars/all List cloud-init-providers in a variable (#1508) a day ago
library patch ansible's 'kube' state 18 days ago
packer [packer] Make packer build work again 2 months ago
playbooks fix upgrade playbook for mixed clusters 14 days ago
plugins terraform.py: update from upstream 2 months ago
roles Hardcode consul_dns_domain (#1449) a day ago
ssl Updates to create self-signed SSL certificates for Vault 4 months ago
terraform Merge branch 'master' of github.com:CiscoCloud/microservices-infrastr… 6 days ago
testing [TRAVIS] Increase timeout for health checks a month ago
vagrant [packer] EPEL 7.5 is gone, switch to EPEL 7.6 2 months ago
.dockerignore Add Dockerfile to provide operational environment. a year ago
.gitignore gitignore: ignore .syncdir/ a month ago
.travis.yml Wrap OS ssh key decryption w/ check for fork (#1415) 29 days ago
CHANGELOG.md docs: update changelog for 1.1 RC2 19 days ago
Dockerfile dockerfile: upgrade to terraform v0.6.16 (#1533) 4 days ago
LICENSE Update LICENSE a year ago
README.md readme: add clc to supported platforms 4 days ago
RELEASES.md add releases documentation a month ago
Vagrantfile Changed terraform.sample.yml to sample.yml, and terraform.yml to mant… 4 months ago
ansible.cfg gluster: move out of default and document that 7 months ago
ci.enc Add travis user for OpenStack testing 3 months ago
docker.py Wrap OS ssh key decryption w/ check for fork (#1415) 29 days ago
docker_launch.sh Fix symlink/env issues, enable ssh-agent & destroy 3 months ago
kubernetes.yml addons: move collectd to an addon 2 months ago
mantl-logo-1.png start mantl.io rebrand 10 months ago
requirements.txt Changed terraform.sample.yml to sample.yml, and terraform.yml to mant… 4 months ago
sample.yml Hardcode consul_dns_domain (#1449) a day ago
security-setup Hardcode consul_dns_domain (#1449) a day ago
test.mesos.yml Merge cleanup 18 days ago




Image (Asset 3/8) alt= Image (Asset 4/8) alt=

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

Table of Contents


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


  • ELK Stack for log collection and analysis
  • GlusterFS for container volume storage
  • 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.


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


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

Image (Asset 5/8) alt=

Control Nodes

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

In general, it's best to provision an odd number (at least 3 or 5) of control nodes to achieve higher availability of services. 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.

Image (Asset 6/8) alt=

Resource Nodes

Resource nodes launch containers and other Mesos-based workloads.

Image (Asset 7/8) alt=

Edge Nodes

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

Image (Asset 8/8) alt=

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:

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


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

normalgit tag

git checkout 1.0.2

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:

normalvagrant up


  • 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.


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

To build the documentation locally, run:

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


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.


  • 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)


  • 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.


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.

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.


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.