-
Notifications
You must be signed in to change notification settings - Fork 10
Mantl Repackaging Roadmap
This roadmap is not finalized, and is definitely up for discussion!
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.
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
- common: mantl-common
- lvm: mantl-lvm
- collectd: mantl-collectd PR #36 Issue: suggested that collectd role be moved to common role:https://github.com/CiscoCloud/mantl/issues/480
- logrotate: This one should be split up and managed by each package
- docker: mantl-docker
- logstash: mantl-logstash
- nginx: mantl-nginx
- consul: mantl-consul: Question: could this be in mantl-common?
- consul-template: this may be combined with mantl-consul
- dnsmasq: mantl-dnsmasq merged with https://github.com/asteris-llc/mantl-packaging/tree/master/mantl/mantl-dns
- etcd: mantl-etcd
Roles for workers
- mesos: Secrets should be managed by vault before this is a package
Roles for controls
- vault: mantl-vault
- zookeeper: mantl-zookeeper
- mesos: mantl-mesos
- marathon: mantl-marathon
- chronos: mantl-chronos
- mantlui: mantl-mantlui
Roles for edges
- traefik: mantl-traefik This role should be installed with yum in common and cloud_init. See https://github.com/CiscoCloud/mantl/issues/933 merged with https://github.com/asteris-llc/mantl-packaging/tree/master/packages/traefik
timezone: Etc/UTC
resolv_conf:
search_domains:
- .node.consul
- 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
- System Dependencies
- 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
- Notes
- collectd: mantl-collectd
- PR#36
- kubernetes roles