/mantl-universe

The Mantl Universe package repository - install Mesos frameworks on Mantl

MIT LicenseMIT

mantl-universe

The Mantl Universe package repository - install DCOS packages on Mantl with Mantl API.

As of mantl-api 0.1.8, the default mantl-universe branch is version-0.7.

Packages

The goals of the packaging system are:

  1. Make it easy to contribute packages to Mantl
  2. Rely on existing DCOS packages when possible
  3. Immutable package versions
  4. Ability for users to build customized package versions

Package Structure

Mantl Universe packages are based on the DCOS packaging format from Mesosphere. Packages in Mantl Universe are intended to be installed with Mantl API and may depend on the corresponding package version in the Mesosphere Universe. For details on how Mantl API installs packages, you can review the Mantl API README.

Each package is made up of several json files:

package.json

The package.json file is where package metadata is set. This includes things like the name, version, description, and maintainer of the package.

In Mantl Universe, the package.json is optional if the intention is to use the package.json from the corresponding package version in the Mesosphere Universe.

config.json

The config.json file contains the configuration schema and defaults for the package.

In Mantl Universe, the config.json is optional if the intention is to use the config.json from the corresponding package version in the Mesosphere Universe.

mantl.json

The mantl.json overrides configuration defaults from the config.json file (either directly in the package or from the config.json for the corresponding package version in the Mesosphere universe) with values that are known to work on Mantl.

Also, the presence of the mantl.json dictates whether the package is "supported" on Mantl. It can be empty {} if there is no specific changes required to make the package run on Mantl.

mantl.json includes a setting that allows you to control how the application is load balanced on Mantl clusters. Currently, it is a simple toggle that allows you to control whether the application will be load balanced by Traefik in a Mantl cluster. Here is an example mantl.json with no other settings other than the load balancing configuration:

{
  "mantl": {
    "load-balancer": "external|off"
  }
}

If mantl.load-balancer is set to "external", the application will be included in the Traefik load balancer. Any other value will disable load balancing.

marathon.json

The marathon.json file contains the Marathon application json for the package. It is a mustache template that is rendered using data from config.json and mantl.json.

In Mantl Universe, the marathon.json is optional if the intention is to use the marathon.json from the corresponding package version in the Mesosphere Universe.

uninstall.json

The uninstall.json defines additional behavior when uninstalling a package. The uninstall support is currently limited to removing zookeeper nodes. It is also a mustache template so that variables from config.json and mantl.json can be used in the uninstall definition.

{
  "zookeeper": {
    "delete": [
      {
        "path": "{{kafka.storage}}",
        "always": true
      }
    ]
  }
}

Example uninstall.json that deletes zookeeper nodes with a path based on the kafka.storage variable.

Available Packages

Mantl Universe provides the following Mantl supported packages:

  • Arangodb
  • Cassandra
  • Chronos
  • Elasticsearch
  • HDFS
  • Kafka