Skip to content
This repository has been archived by the owner on Jul 27, 2023. It is now read-only.

Mantl Repackaging Roadmap

TanyaCouture edited this page Mar 11, 2016 · 12 revisions

Packaging Roadmap for Mantl

This roadmap is not finalized, and is definitely up for discussion!

Rationale

To improve mantl's deployment speed, we are going to replace some ansible role logic with packages. The format and design of the packages are being studied and options considered. rkt packaging is a strong contender http://aster.is/blog/2016/02/26/setting-up-rkt/

Previous consideration: the packages would be defined by a hammer spec,and uploaded to bintray. Anything that is as simple as 'copy this file here' or 'run this command' could be ported to these packages. Then, the ansible roles can be updated to simple package install commands. Because we are using the hammer tool to build these, when hammer supports .deb packages, ubuntu/debian support will come much more easily.

Logic that relies upon Jinja2 templates could be ported to Consul templates, and those could be ported to packages.

The more ansible roles that we port to packages, the faster the build process will be. If we can remove ansible entirely, we can have mantl bootstrap from terraform, and make cluster deployment into a one-step process.

Ansible roles -> New Packages

Here is the list from the terraform.sample.yml ansible playbook. For each role that we can port to a package, put the package name after it, and list the package description below, or make a note. I hope that the ad-hoc formatting here makes sense.

I'm not going to include any package upgrade logic here, either for yum or pip. We will let the user/packages decide what versions to use

Another assumption here is that each of these packages are going to have distributive check files associated with them. As of right now, those are in the distributive-{component} packages.

Status of ansible roles to be converted Roles for all hosts

Roles for workers

  • mesos: Secrets should be managed by vault before this is a package

Roles for controls

Roles for edges

cloud_init user_data.

timezone: Etc/UTC
resolv_conf:
  search_domains:
    - .node.consul

Addon packages

  • calico + etcd ansible roles -> mantl-calico
  • mesos ansible role with leader/follower configs -> mantl-mesos-{common?, leader, follower}
    • common package installs and configures zookeeper?
    • follower package configures node to pull from vault
  • marathon ansible role -> mantl-marathon package that depends upon mantl-mesos
  • marathon ansible role -> mantl-chronos package that depends upon mantl-mesos
  • mantlui -> mantl-ui
  • lvm: mantl-lvm
    • System Dependencies
      • mantl-common
      • device-mapper-libs
      • lvm2
    • Ansible facts
      • defaults: lvm_volume_group_name=mantl, lvm_physical_device= different things depending upon provider
      • volume groups list -> vgscan
    • Ansible volume tasks when volume has not been created
      • create volume group, based on ansib
      • enable lvmetad service -> systemctl enable lvm2-lvmetad 2>/dev/null && systemctl restart lvm2-lvmetad
    • Ansible main tasks: set group name to blank if physical device is blank
  • docker: mantl-docker
    • Notes
      • needs logrotate config from ansible role
      • there's a bunch of stuff here for LVM.
        • We could create separate package for it mantl-docker-lvm
        • Or, we could include it in mantl-lvm
    • same goes for the collectd docker plugin
    • System Dependencies
      • docker
      • docker-selinux
      • mantl-common
  • collectd: mantl-collectd
    • PR#36
  • kubernetes roles
Clone this wiki locally